public class StaticCTest {
private static StaticCTest st = new StaticCTest();
public static int count1;
public static int count2 = 0;
public StaticCTest(){
count1++;
count2++;
}
public static StaticCTest getInstance() {
return st;
}
public static void main(String[] strs){
StaticCTest st = StaticCTest.getInstance();
System.out.println("count1:" + st.count1);
System.out.println("count2:" + st.count2);
}
}
运行结果:
count1:1
count2:0
理解:首先运行main()方法,main方法中是一个静态方法,但是静态方法是要按照从上到下的顺序运行,运行到
private static StaticCTest st = new StaticCTest()
的时候,需要运行构造函数,然后再运行其他的静态方法。
public class StaticCTest {
public static int count1;
public static int count2 = 0;
private static StaticCTest st = new StaticCTest();
public StaticCTest(){
count1++;
count2++;
}
public static StaticCTest getInstance() {
return st;
}
public static void main(String[] strs){
StaticCTest st = StaticCTest.getInstance();
System.out.println("count1:" + st.count1);
System.out.println("count2:" + st.count2);
}
}
运行结果:
count1:1
count2:1