7:50-8:00学习打卡
9:00-12:00看书
2:00-3:00看书
初始化块
使用初始化块
初始化块是Java类里可出现的第4种成员,一个类里可以有多个初始化块,相同类型的初始化块之间有顺序
[修饰符]{
//初始化块的可执行性代码
}
初始化块的修饰符只能是static,使用static修饰的初始化块被称为类初始化块
(静态初始化块),没有static修饰的初始化块被称为实例初始化块(非静态初始化块)。
初始化块无法被调用,被隐式执行
在构造器执行之前执行,类初始化块则在类初始化阶段自动执行
实例初始化块和构造器
由于不能接收参数,因此实例初始化块对同一个类的所有对象所进行的初始化处理完全相同
与构造器相似,系统不止会执行该类的构造器与初始化块,会一直上溯到java.lang.Object类,先执行java.lang.Object类的实例初始化块,开始执行java.lang.Object类的构造器,依次向下执行其父类的实例初始化块、构造器,一直到该类的初始化块和构造器
实例初始化块、声明实例变量指定的默认值都可以认为是对象的初始化代码,它们的执行顺序与源代码中的排列顺序相同
类初始化块
系统在执行类初始化阶段执行类初始化块
类初始化块总是比实例初始化块先执行
与实例初始化块一样,会上溯
同样需要遵循静态成员不能访问非静态成员的规则
类初始化块、声明类变量指定的默认值都可以认为是类的初始化代码,它们的执行顺序与源代码中的排列顺序相同
一旦类初始化成功,将一直在虚拟机中存在
包装类
为了解决8种基本数据类型不能当成Object类型变量使用的问题,Java提供了包装类
基本数据类型 | 包装类 |
---|---|
byte | Byte |
short | Short |
int | Integer |
long | Long |
char | Character |
float | Float |
double | Double |
boolean | Boolean |
除int、char有点特别外,其余的都是将其基本数据类型的首字母大写
自动装箱
可以把一个基本类型变量直接赋给对应的包装类变量,或者赋给Object变量
自动拆箱
与之相反,允许直接把包装类对象直接赋给一个对应的基本类型变量
包装类可以实现基本类型变量和字符串之间的转换
字符串类型的值转化为基本数据类型的值
- 利用包装类提供的parseXxx(String s)静态方法(除Character之外所有包装类都提供了该方法)
- 利用包装类提供的valueOf(String s)静态方法
基本数据类型的值转化为字符串类型的值
- String类也提供了多个重载valueOf()方法,用于将基本数据类型转化为字符串
- 可以将基本数据类型与""进行连接(用+)