java 类中静态 { }(大括号) 构造方法顺序
静态代码块
static{
System.out.println("我是静态代码块");
}
类中的初始化顺序(一个类,没有继承关系)
静态初始化==>默认初始化==>定义初始化==>{ }==>构造方法初始化
1,静态初始化(静态属性,静态代码块,静态方法)是按在类中的先后顺序执行的
2,默认初始化,是属性的初始化
int类型的话是0,double类型是0.0,String类型是null
3,定义初始化,是属性的赋值初始化
比如在类中声明一个int类型变量,赋值为1
public int variable = 1;(首先variable初值是为0,之后把1的值赋给了variable,然后variabl=1)
4, {
System.out.println("我是大括号");
}
{ }大括号是方法块。
代表一段程序,在这里面的定义变量是局部变量,不和全局变量有冲突,代码块运行完毕之后该区域的变量就变成了垃圾数据。
上面摘自于某位博主的定义,我不太清楚。
5,构造方法初始化,是在类加载时需要初始化的方法或属性,等等。
下面是自己写的测试类。
public class OrderClass {
private int ab =1;
private int cd = getCd();
static {
System.out.println("OrderClass静态");
}
public OrderClass() {
System.out.println("OrderClass构造方法 cd="+cd);
}
int getCd() {
System.out.println("OrderClass属性调用方法 cd="+cd);
return ab;
}
{
System.out.println("OrderClass 大括号 cd="+cd);
}
public static void main(String[] args) {
new OrderClass();
}
}

做了继承的测试,把{ }屏蔽了,这样顺序就捋清楚了。
先父类静态,再子类静态。然后父类 默认初始化,定义初始化,构造方法初始化。然后子类 默认初始化,定义初始化,构造方法初始化。
标示:以上仅限于个人学习总结和分享,有不对的地方大家可以指出来,及时做更改。

浙公网安备 33010602011771号