成员初始化的三种方式
成员初始化的三种方式:
1、通过默认值初始化
2、通过指定值初始化
3、通过构造器初始化
1、通过默认值初始化
2、通过指定值初始化
3、通过构造器初始化
3.1 初始化顺序
在类的内部,变量定义的先后顺序决定了初始化的顺序。即使变量定义散布于方法定义之间,它们仍旧会在任何方法(包括构造器)被调用之前得到初始化。例如:

3.2 静态数据的初始化
无论创建多少个对象,静态数据都只占用一份存储区域。static关键字不能应用于局部变量,因此它只能作用于域。如果一个域是静态的基本类型域,且也没有对它进行初始化,那么它就会获得基本类型的标准初值;如果它是一个对象引用,那么它的默认初始化值就是null。
要想了解静态存储区域是何时初始化的,就请看下面这个例子:


由输出可见,静态初始化只有在必要时刻才会进行。
初始化的顺序是先静态对象(如果它们尚未因前面的对象创建过程而被初始化),而后是“非静态”对象。
3.3 显式的静态初始化
静态代码块只执行一次

3.4 非静态实例初始化

4、补充:
Java中各个成员初始化顺序
·静态属性:static开头定义的属性
·静态方法块:static{}包起来的代码块
·main()方法入口执行
·普通属性:非static定义的属性
·普通方法快:{}包起来的代码块
·无参构造函数:类名相同的方法
·普通属性:非static定义的属性
·普通方法快:{}包起来的代码块
·带参数的参构造函数:类名相同的方法(参数列表)
————————————————
原文链接:https://blog.csdn.net/sunjiedg/article/details/122346667

浙公网安备 33010602011771号