0-JavaSE总结索引

JavaSE总结

内容 文章链接
JavaSE基础知识 https://blog.csdn.net/qq_45445505/article/details/133633514
JavaSE进阶知识-1-面向对象 https://blog.csdn.net/qq_45445505/article/details/134038124
JavaSE进阶知识-2-递归、流、异常、File、包装类、时间类 https://blog.csdn.net/qq_45445505/article/details/134038173
JavaSE进阶知识-3-集合 https://blog.csdn.net/qq_45445505/article/details/134038198
JavaSE进阶知识-4-IO流(字符流、字节流) https://blog.csdn.net/qq_45445505/article/details/134038259
JavaSE进阶知识-5-IO流(缓冲流、转换流、序列化流、打印流、压缩流) https://blog.csdn.net/qq_45445505/article/details/134038277
JavaSE进阶知识-6-多线程 https://blog.csdn.net/qq_45445505/article/details/134038302
JavaSE进阶知识-7-UDP-TCP https://blog.csdn.net/qq_45445505/article/details/134038329
JavaSE进阶知识-8-反射、动态代理 https://blog.csdn.net/qq_45445505/article/details/134038354

JavaSE基础知识

文章链接: https://blog.csdn.net/qq_45445505/article/details/133633514

背景知识

三种技术架构 Java SE、Java ME、Java EE
Java跨平台工作的原理? JDK、JRE、JVM的关联联系?
Java发展历程(长期支持版本)
java项目结构(项目、模块、包、类)

基础语法

注释 单行注释、多行注释、文档注释
关键字
字面量、变量、常量
标识符 合法的命名规则
常量、变量、方法、类等的命名规则
数据类型 基本数据类型(8种)
ASCLL码表
引用数据类型(类、接口、数组)
运算符 运算符、表达式
算术运算符、自增自减运算符、赋值运算符、关系运算符、逻辑运算符、三元运算符、运算符优先级
类型转换(隐形转换、强制转换)

方法(函数)

定义格式
方法调用内存图解 JVM内存分配
函数调用,各个内存区域调用细节
方法重载

流程控制语句

顺序结构 默认
分支结构 if…else
循环结构 for、while、do…while
跳转控制语句 break、continue

数组

静态初始化 一维数组、二维数组
动态初始化 一维数组、二维数组
数组及其所属类型、初始化方式和默认值 整数数组、小数数组、字符数组、布尔数组、(类、接口、数组)数组

字符串

String类 特点
字符串常量池
字符串比较操作
StringBuilder类 构造方法
长度可变原理(扩容原理)
基本操作:添加、反转、获取长度、转为字符串
StringBuffer类 跟StringBuilder的区别(线程安全)

JavaSE进阶知识-1-面向对象

文章链接:https://blog.csdn.net/qq_45445505/article/details/134038124

面向对象-1-基本、封装

类和对象基本 类的组成:成员变量和成员方法
this关键字
构造方法
封装 权限修饰符

面向对象-2-static、final、继承

static关键字 被修饰成员(成员变量、成员方法)特点、注意事项
final关键字 用于修饰类、修饰方法、修饰成员变量
继承 继承关系中成员变量、成员方法、构造方法的各自特点
继承关系的内存图解
this、super的区别

面向对象-3-包、抽象类、接口、多态

导包、建包
抽象类 定义格式、注意事项
接口 接口特点、其内部成员特点
接口和类的关系(类和类、接口和类、接口和接口)
接口和抽象类在(成员变量、成员方法、构造方法)上的区别
接口新特性
多态 实现前提(3要素)
多态访问非静态成员
多态访问静态成员
多态的好处和不足
多态转型

面向对象-4-代码块、内部类、Lambda表达式

代码块 局部代码块、构造代码块、静态代码块、同步代码块
内部类 成员内部类、静态内部类、局部内部类、匿名内部类
Lambda表达式 Lambda表达式和匿名内部类的区别

JavaSE进阶知识-2-递归、流、异常、File、包装类、时间类

文章链接: https://blog.csdn.net/qq_45445505/article/details/134038173

实用类:Objects、Math、System、BigDecimal

Objects 所有的类都直接或间接继承该类(祖宗类),其内的方法都可用
Math 包含基本的数字运算方法
System 都是静态方法,可以直接调用
BigDecimal 用于解决小数运算中,出现的不精确问题

包装类

8大基本数据类型对应的包装类
自动拆箱、自动装箱
包装类的比较问题

时间类

JDK8以前的时间类 Date、SimpleDateFormat、Calendar
JDK8以后的时间类 日历类(获取当前时间):LocalDate、LocalTime、LocalDateTime
日期格式化类(格式化时间):DateTimeFormatter
时间类(获取时间):Instant、ZoneId、ZoneDateTime
工具类(计算时间间隔):Period、Duration、ChronoUnit

递归

方法直接或间接调用本身

异常

异常体系
异常处理方法 默认抛出
异常捕捉
throw和throws的区别

JavaSE进阶知识-3-集合

文章链接:https://blog.csdn.net/qq_45445505/article/details/134038198

补充知识-泛型

泛型有关的版本信息
泛型类 常用泛型标识符
泛型方法 非静态泛型方法
静态泛型方法
泛型接口 类实现接口的时候,直接确定泛型
延续接口的泛型,等创建对象的时候再确定
泛型通配符 可以让一个方法传入不同的对象类型

补充知识-树

树的基本概念 节点、度、树高、根节点、左子节点、右子节点、根节点的左子树、根节点的右子树
二叉树-普通二叉树
二叉树-二叉查找树 数据分布特点(大小)
节点添加流程
优点、不足
二叉树-平衡二叉树 定义
旋转机制
二叉树-红黑树 定义
红黑规则

补充知识-常见数据结构

常见数据结构 栈、队列、数组、链表、双向链表、树
集合底层数据结构 Collection-List
Collection-Set
Map

集合基本

集合分类 大分类、小分类
集合的遍历方式 通用遍历方式:迭代器、增强for、forEach
额外遍历方式-List集合:普通for循环、ListIterator(List集合特有的迭代器)

Collection接口

通用函数 add、clear、remove、contains、isEmpty、size
List-ArrayList 支持索引
增、删、改、查
ArrayList长度可变原理
List-LinkedList 增、删、改、查 + 查首个元素、查尾部元素(非索引)
Set-TreeSet 具备排序功能的集合(红黑树实现)
自然排序:常见类、自定义类
比较器排序
Set-HashSet 可以保证数据唯一性
底层实现的版本信息
数据存储过程、数组扩容、链表转红黑树
特点
Set-LinkedHashSet 可以保证存取有序
相对于HashSet多了一个双链表存储顺序
Collection类集合的选用
Collections工具类

Map接口

基础介绍 双列集合、元素格式
Map类别 TreeMap、HashMap、LinkedHashMap
通用方法 put、remove、clear、containsKey、containsValue、isEmpty、size
HashMap底层原理理解
Map集合遍历方式 forEach方法
通过键值对对象获取键、值
通过键找值
Map集合选用

JavaSE进阶知识-4-IO流(字符流、字节流)

文章链接:https://blog.csdn.net/qq_45445505/article/details/134038259

IO概述

什么是IO
IO分类
各IO的究极父类

IO整体总结

类1-1 字节流、字符流
类1-2 字节缓冲流、字符缓冲流
类1-3 字节打印流、字符打印流
类2 转换流
类3-1 序列化流、反序列化流
类3-2 压缩流、解压缩流

字节流

一切皆字节 可以传输任何形式的数据
字节输出流 抽象父类OutputStream
实现子类-文件输出流-FileOutputStream 构造方法
写字节数据-单个
写字节数据-多个-数组
数据追加写
数据换行写
字节输入流 抽象父类-InputStream
实现子类-文件输入流-FileInputStream 构造方法
读字节数据-单个
读字节数据-多个-数组
流的关闭原则

字符流

处理文本文件
字符编码-字符集 字符编码
字符集–ASCII、字符集–ISO-8859-1、字符集–GBxxx、字符集–Unicode
字符输出流 抽象父类-Writer
实现子类-FileWriter 构造方法
写字节数据-单个
写字节数据-多个-数组
写字节数据-多个-字符串
数据续写
数据换行写
流的关闭和刷新
字符输出流 抽象父类-InputStream
实现子类-文件输入流-FileInputStream 构造方法
读字节数据-单个
读字节数据-多个-数组
底层实现原理 文件关联、缓冲区

JavaSE进阶知识-5-IO流(缓冲流、转换流、序列化流、打印流、压缩流)

文章链接:https://blog.csdn.net/qq_45445505/article/details/134038277

缓冲流

字节缓冲流:BufferedInputStream、BufferedOutputStream 构造方法
效率对比-字节流
字符缓冲流:BufferedReader、BufferedWriter 构造方法
特有方法:realLine()、newLine()
总结 字节缓冲流高效的原因(缓冲区)
字符缓冲流,效率提升不明显(本来就有缓冲区)

转换流

字符流和字节流之间的桥梁 将输入字节流转为输入字符流:InputStreamReader
将输出字符流转为输出字节流:OutputStreamWriter
InputStreamReader 构造方法
指定编码读取(转换流,JDK11后淘汰;用字符输入流)
OutputStreamWriter 构造方法
指定编码写出(转换流;字符输出流)

序列化流

序列化流 对象到字节-ObjectOutputStream
序列化必备条件:实现Serializable接口;所有属性可序列化(不需要序列化的属性需特殊标记)
反序列化流 字节到对象-ObjectInputStream
避免属性变更造成无法反序列化,需要提供一个序列版本号
OutputStreamWriter 构造方法
指定编码写出(转换流;字符输出流)

打印流

只有输出流,不具备输入流
PrintStream-字节打印流 构造方法
改变打印流向
PrintWriter-字符打印流 构造方法
成员方法

压缩流和解压缩流

压缩流 负责压缩文件或文件夹
解压缩流 负责把压缩包中的文件和文件夹解压出来
宗旨 体会思想,有很多现成的工具包

工具包

Commons-io 是apache开源基金组织提供的一组有关IO操作的开源工具包,提高IO流的开发效率
hutool 国人开发的开源工具包,里面有很多帮助我们提高开发效率的API

JavaSE进阶知识-6-多线程

文章链接:https://blog.csdn.net/qq_45445505/article/details/134038302

多线程–基本概念

并发和并行
进程和线程
多线程

多线程–实现

1-继承Thread类
2-实现Runnable接口
3-实现Callable接口
三种多线程实现方法对比

多线程–线程方法

设置和获取线程名称
线程休眠
线程优先级
守护线程
礼让线程和插入线程
线程的生命周期

多线程–线程同步

买票例子举例
实现线程同步的方法 同步代码块
同步方法
线程锁Lock

多线程–死锁

理解即可

多线程–生产者消费者模式示例

理解等待唤醒机制 暂空
阻塞队列实现等待唤醒机制 暂空

多线程的6种状态

掌握6种状态
注意:没有运行状态

线程池

暂空

JavaSE进阶知识-7-UDP-TCP

文章链接:https://blog.csdn.net/qq_45445505/article/details/134038329

网络编程

概述 计算机网络、网络编程三要素
网络编程三要素–IP地址 IP地址–分类:IPv4、IPv6
IP地址–特殊的IP地址
IP地址–获取:DOS命令、InetAddress类
网络编程三要素–端口 端口号
网络编程三要素–协议 什么是协议?
UPD协议
TCP协议

UDP协议通信实现

三种通讯方式 单播、组播、广播
三种方式不同的地方在于,打包数据的时候,塞入不同的地址
发送数据 创建发送端的Socket对象(DatagramSocket)—【快递公司】
创建数据,并把数据打包—【用户打包数据】
调用DatagramSocket对象的方法发送数据—【快递员发送】
关闭发送端—【结账】
接收数据 创建接收端的Socket对象(DatagramSocket)—【快递公司】
创建一个数据包,用于接收数据—【位置存放数据】
调用DatagramSocket对象的方法接收数据—【快递员接收】
解析数据包,并把数据在控制台显示
关闭接收端–【签收】

TCP协议通信实现

Java中,底层通过IO流来完成通信
传输数据–常规(不带有中文)
传输数据–带有中文 需要用到转换流、字符缓冲流(不必备)

JavaSE进阶知识-8-反射、动态代理

文章链接:https://blog.csdn.net/qq_45445505/article/details/134038354

反射

反射的理解 可以无视修饰符调用类里面的所有内容
概念:字节码文件和字节码文件对象的理解 反射要获取的是字节码文件对象,这个对象在内存中是唯一的
掌握-获取class字节码文件对象 3中获取手段
掌握-利用反射获取构造方法 获取所有公开的、获取所有空开&飞公开的、获取单个公开的、获取单个公开&非公开的
掌握-利用反射获取成员变量 获取所有公开的、获取所有空开&飞公开的、获取单个公开的、获取单个公开&非公开的
掌握-利用反射获取成员方法利用反射获取成员方法 获取所有公开的、获取所有空开&飞公开的、获取单个公开的、获取单个公开&非公开的

动态代理

动态代理–好处 无侵入式的给方法增强功能
动态代理–三要素 真正干活的对象、代理对象、利用代理调用方法
动态代理–扩展应用 方法拦截

你可能感兴趣的:(Java,java)