JAVA初始化问题1

class Test1{
 static {
  System.out.println("***");
 }
 
 public final static String a="sss";
}

public class Test {

    public Test() {
   
    }
   
    public  static void main(String[] args){
     System.out.println(Test1.a);
    }
}

运行结果:

sss

调用类的final成员不会引发类的初始化操作,所以static语法块不会被执行 当staitc成员变量为null时,会查找static语法快运行以便能够正确初始化static成员

class Test1{
 static {
  System.out.println("***");
 }
 
 public static String a="sss";
}

public class Test {

    public Test() {
   
    }
   
    public  static void main(String[] args){
     System.out.println(Test1.a);
    }
}

运行结果:

***

 sss

class Test1{
 static {
  System.out.println("***");
 }
 
 public static String a=null;
}

public class Test {

    public Test() {
   
    }
   
    public  static void main(String[] args){
     System.out.println(Test1.a);
    }
}

 

运行结果:

***

null

 

 

 

 

 

你可能感兴趣的:(JAVA初始化问题1)