/*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
	  }
}
 
                     
                    
                 
                    
                 
         
