Java 基础内容
- 数据类型
- 运算符
- 流程控制
- 面向对象
- 重要关键字
- 异常
- 编码
- Object类
数据类型
计算机中最小的单位是bit,一个位0/1表示
基础数据类型
byte 1字节
short 2字节
int 4字节
long 8字节
float 4字节
double 8字节
boolean 1字节
char 2字节 可以为unicode编码,位于栈
1
char a = '\u1233';//unicode编码表达
引用数据类型:引用位于栈,引用的对象位于堆
高精度向低精度可能丢失,表达式中默认转换为当前表达式的最大精度进行计算
运算符
- 基础运算符
- instanceof 用于判断对象是否是某类型
流程控制
if else
if elseif
while
do while
for
foreach 需要容器实现Iterable接口和Iterator接口
1
2
3for(SomeType obj: objList) {
//
}
面向对象
继承
关键字extends,类的继承和接口的继承
封装
访问控制private,default,protected,public
多态
通过父类或者接口引用访问实际对象的方法,称为动态绑定,实在运行时才能决定的。
重载
静态绑定,即同名方法存在不同的参数列表(类型,数量)
接口
成员和方法修饰为public ,实现的类需要实现方法,与接口间可以继承。只有声明,但是新版jdk可以存在默认方法,使用default定义
内部类
匿名内部类,默认持有外部类this引用
1 | //只是将匿名内部类复制给了一个引用,其实再参数传递中的内部类,同样也是将匿名内部类对象传递给了,临时的引用。 |
成员内部类,默认持有外部类this引用
1 | class A{ |
静态内部类,不会持有外部引用
1 | Class A{ |
内部类可以和成员一样访问外部类的成员。
匿名内部类对象在访问方法参数,参数需要定义为final,因为在方法中一旦一开,参数的生命周期也就结束了,但是匿名内部类对象还引用着,通过使用final来拷贝一份使用,间接的延长了生命周期,也就可以正常访问了。
引用类型
- 强引用 只要持有强引用,JVM宁可抛出内存泄漏也不愿意去回收
- 软引用 在没有强引用的情况下且内存不足情况下会去回收对象
- 弱引用 在没有强引用的情况下回去回收对象
- 虚引用 形同虚设,常用于jvm内部跟踪垃圾回收过程,回送一个消息通知