一阶段知识点梳理
JavaSE
基础
变量:程序执行过程中可变的量(存储单个数据的容器)
标识符:给类、接口、方法、变量取名字时使用到的字符序列
组成部分:数字、大小写字母、$、_、中文
注意:
- 区分大小写
- 不能使用数组开头
- 不能使用除了$和_以外的符号
- 不能使用关键字
- 不要使用中文
关键字:Java提供的具有特殊意义的单词
基本数据类型 描述 占用空间 byte 字节型 1字节 short 短整型 2字节 int 整型 4字节 long 长整型 8字节 float 单精度浮点型 4字节 double 双精度浮点型 8字节 char 字符型 2字节 boolean 布尔型 4字节 注意:boolean底层使用int去存储,boolean的数组的元素使用byte类型去存储
运算符 符号 算数运算符 +、-、*、/、%、++、– 赋值运算符 =、+=、-=、*=、/=、%= 关系运算符 ==、!=、>、>=、<、<= 逻辑运算符 &、&&、|、||、^、! 三目运算符 变量 = (表达式)?值1:值2; 位运算符 &、|、^、<<、>>、>>> 字符串拼接符 + 经验:灵活运用小括号
执行语句
顺序语句:方法里的代码从上往下执行
分支语句(if、switch)
表达式的区别
if:boolean
switch:byte、short、int、char、枚举、字符串,底层只认int
应用场景的区别
if:判断区间和复杂的条件
switch:判断单个值
循环语句(for、while、do-while)
表达式的区别
for(初始化变量;判断条件;更新变量){}
while(判断条件){}
do{}while(判断条件);
相同点:判断条件必须是boolean,true-循环,false-跳出循环
执行顺序的区别
for:先判断,再执行
while:先判断,再执行
do-while:先执行一遍,再判断
应用场景的区别
for:循环次数确定
while:循环次数不确定,先判断再执行
do-while:循环次数不确定,先执行一遍再判断
特殊的流程控制语句(break、continue、return、lable)
break:作用于循环中,表示跳出当前循环
continue:作用于循环中,表示跳过循环体剩余的部分,进入到下一次循环
return:作用于方法中,表示结束当前方法,也可以返回数据
lable:给循环做标记
数组
分类:一维数组、二维数组、三维数组
概念:
- 一组数据的容器
- 元素:数组中的数据
- 下标/索引:元素的编号(从0开始)
- 可以通过下标对元素进行设置或获取
- 遍历数组使用for或foreach
数组的排序:(冒泡、选择、插入、希尔、桶、计数、基数….)
数组的查找:(线性、二分法、插值、黄金分割)
数组的复制、扩容、删除 – 代码实现及内存分析
可变参数
面向对象
类 - 对象的概念
类中内容:属性、方法
1
2
3
4
5
6
7 public class 类{
//属性 - 全局变量
//分类:成员属性、静态属性、常量属性
//方法 - 全局方法
//分类:成员方法、静态方法、抽象方法、同步方法
}
成员变量 vs 局部变量
成员变量 vs 静态变量
成员方法 vs 静态方法
构造方法
概念:
作用:
封装
概念:
步骤:
this
概念:本对象,哪个对象去调用成员方法,方法中的this就表示哪个对象
作用:
static - 静态的
作用:
修饰属性 - 类属性:
修饰方法 - 类方法:
修饰代码块 - 静态代码块:
继承
概念:子类继承父类所有的属性和方法
面试题:
super
概念:
作用:
重写
概念:在子类中将父类的方法重新写一遍
应用场景:当父类方法不满足子类需求时就考虑在子类中重写
条件:
- 在子类中重写父类的方法
- 返回值、方法名、参数列表必须一致
- 访问修饰符不能比父类的更加严格
重载
概念:方法与方法之间的关系
应用场景:编写多个方法,方法功能大致一致,细节实现不一致,就考虑使用重载
条件:
- 在同一个类中
- 方法名一致
- 参数列表的个数或类型不一致
- 与返回值无关
访问修饰符
含义:修饰类、方法、属性定义使用的范围
学习:做实验
访问修饰符 本类 本包 其他包子类 其他包 private OK 默认的 OK OK protected OK OK OK public Ok OK OK Ok
Object
含义:
常用方法:
标杆作用
final
含义:
作用:
抽闲类及抽象方法
接口
多态
对象转型
内部类
常用类
- 包装类(出现原因、底层原理)
- 字符串(String、StringBuilder、StringBuffer、底层原理)
- 正则表达式
- Math(静态导入)
- Random(种子数)
- 大数值的运算类
- 枚举 – 底层
集合
Collection vs Map
List vs Set
ArrayList:一维数组
LinkedList:双向链表
Vector:一维数组 + 线程安全
Stack extends Vector :栈模式
HashSet:底层由HashMap实现
LinkedHashSet:底层由LinkedHashMap实现
TreeSet:底层由TreeMap实现
HashMap:一维数组 + 单向链表 + 红黑树(JDK1.8)
LinkedHashMap extends HashMap
Hashtable:一维数组 + 单向链表 + 线程安全
ConcurrentHashMap:一维数组 + 单向链表 + 线程安全
Properties:配置文件类
Collections:集合的工具类
内置比较器 vs 外置比较器
理解每个集合的底层原理
多线程
线程的创建方式和基本使用
线程的生命周期
线程安全的方式
卖票的案例
生产者消费者模型
仓储模型
线程池及自定义线程池 – 底层
带有返回值的任务类
IO流
字节流
字符流
对象类
打印流及重定向
内存流 – 关闭不掉的
随机访问流 – 断点续传
网络编程
TCP/IP:三次握手和四次挥手
UDP:发送数据报包
HTTP:理解请求和响应
注解
预定义注解
元注解
自定义注解
反射
获取Class对象 – 3种方式
操作类中的属性、构造方法、方法、参数、返回值、泛型、数组、注解
反射案例
JDK1.8
- Lambda
- 函数式接口 - @FunctionInterface
- 方法、构造方法、数组的引用
- Stream
- 日期时间组件
学习步骤
- 理解概念
- 学会使用
- 分析底层原理
经验:JavaSE重点关注 – 面向对象、集合、多线程、反射、JDK1.8新特性