- 属性初始化和代码块谁在前谁先执行
- 静态属性初始化+静态代码块>非静态属性初始化+非静态代码块>构造方法
- 注: “+”表示并列关系
- 注: 静态属性和静态代码块只会执行一次。
class Test
{
private static String staticStr = getStatic();
private String Str = getStr();
{
System.out.println("非静态代码块");
}
public Test(){
System.out.println("构造方法");
}
static {
System.out.println("静态代码块");
}
private static String getStatic(){
System.out.println("静态属性初始化");
return null;
}
private String getStr(){
System.out.println("静态属性初始化");
return null;
}
public static void main(String[] args){
new Test();
}
}
输出结果:
———- java ———-
静态属性初始化
静态代码块
静态属性初始化
非静态代码块
构造方法
class Test
{
{
System.out.println("非静态代码块");
}
public Test(){
System.out.println("构造方法");
}
static {
System.out.println("静态代码块");
}
private static String staticStr = getStatic();
private String Str = getStr();
private static String getStatic(){
System.out.println("静态属性初始化");
return null;
}
private String getStr(){
System.out.println("静态属性初始化");
return null;
}
public static void main(String[] args){
new Test();
}
}
输出结果:
———- java ———-
静态代码块
静态属性初始化
非静态代码块
非静态属性初始化
构造方法