public class StaticTest
{
private static StaticTest st = new StaticTest();
public static int count1;
public static int count2 = 0; private StaticTest()
{
count1++;
count2++;
}
public static StaticTest getInstance()
{
return st;
}
public static void main(String[] args)
{
StaticTest st = StaticTest.getInstance();
System.out.println("count1: " + st.count1);
System.out.println("count2: " + st.count2);
}
}
看看程序的结果为什么是1,0
这是我在听风中叶老师视频上看到的一段代码,但是我还是有不明白的地方?
大家看看
{
private static StaticTest st = new StaticTest();
public static int count1;
public static int count2 = 0; private StaticTest()
{
count1++;
count2++;
}
public static StaticTest getInstance()
{
return st;
}
public static void main(String[] args)
{
StaticTest st = StaticTest.getInstance();
System.out.println("count1: " + st.count1);
System.out.println("count2: " + st.count2);
}
}
看看程序的结果为什么是1,0
这是我在听风中叶老师视频上看到的一段代码,但是我还是有不明白的地方?
大家看看
private static StaticTest st = new StaticTest(); 且在以下两句之前
public static int count1;
public static int count2 = 0; 就是说先执行
count1++;
count2++;
然后再public static int count1;
public static int count2 = 0;
public static int count1;
public static int count2 = 0; private static StaticTest st = new StaticTest();
count1++;
count2++; 然后又遇到
public static int count1;
public static int count2 = 0;
count2又被置为0了。把“public static int count2=0;”中的“=0”去掉,再试试看?
但在new StaticTest()时候count1和count2是否已经定义了?
一个程序是从主函数开始运行的吧,当执行StaticTest st = StaticTest.getInstance();不是准去调用上面的那个方法了吗,就是在这个时刻,程序又怎么跑去初始化自己的成员变量了,我就是清楚这个程序是什么加载啊,到底怎么个执行顺序特乱?大家可不可以帮我从一个类开始加载开始给我讲讲,谢谢了?