两种情况的加载顺序:
初始化阶段的初始化步骤: 静态代码块(先父类后子类)--------> (非静态代码块------- > 父类)—先父类后子类
一、单独类的加载顺序
静态变量、静态代码块:从上到下的顺序加载。
类的非静态变量,非静态块:从上到下的顺序加载。
构造函数。
二、子类继承父类的加载顺序
父类静态变量、父类静态代码块(从上到下的顺序加载)
子类静态变量、子类静态代码块(从上到下的顺序加载)
父类的非静态变量、父类的非静态代码块(从上到下的顺序加载)
父类的构造方法。
子类的非静态变量、子类的非静态代码块(从上到下的顺序加载)
子类的构造方法。
注意!!!!!!
静态方法和非静态方法只有在调用的时候才会执行,不调用不会执行,静态方法是类的方法,非静态方法需要对象调用。
变量赋值问题,Java中局部变量需要显式赋值后才能使用,成员变量也可直接显式赋值,但是如果没有给初始值,当加载声明变量时这个时候是默认值,
默认值 | |
---|---|
int | 0 |
Boolean | false |
char | ‘\u0000’(null) |
byte | (byte)0 |
short | (short)0 |
long | 0L |
float | 0.0f |
double | 0.0d |