/*1.创建类的实例
2.访问类的静态变量(除常量【被final修辞的静态变量】原因:常量一种特殊的变量,因为编译器把他们当作值(value)而不是域(field)来对待。
3.访问类的静态方法
4.反射如(Class.forName("my.xyz.Test"))
5.当初始化一个类时,发现其父类还未初始化,则先出发父类的初始化
6.虚拟机启动时,定义了main()方法的那个类先初始化*/
class SingleTon {
private static SingleTon singleTon = new SingleTon();// 进入类初始化阶段 先执行① 若把它调到count2下面 将影响结果
public static int count1;// ⑤ 系统默认分配,从对象中载入域(field)的值=1;
public static int count2 = 0;// ⑥ 赋值 覆盖掉count2=1;
private SingleTon() {// ②
count1++;// ③
count2++;// ④
}
public static SingleTon getInstance() {
return singleTon;
}
}
public class Test1 {
public static void main(String[] args) {
// SingleTon singleTon = SingleTon.getInstance();
System.out.println("count1=" + SingleTon.count1);// 1
System.out.println("count2=" + SingleTon.count2);// 0
}
}