日期:2014-05-20  浏览次数:20619 次

类加载和初始化顺序,多谢帮忙看看

public class Singleton {
  private static Singleton single = new Singleton();
  private static int counte1; 
  private static int counte2 = 0; 
  private Singleton() {  
counte1++;
counte2++;
  }
   
  public static Singleton getInstance() {
return single;
  }
   
  public static void main(String[] args) {
Singleton obj = Singleton.getInstance();
System.out.println("Counte1=" + obj.counte1);
System.out.println("Counte2=" + obj.counte2);
  }
}

请问为什么不是Counte1=null,counte2=null.它是private,这里构造器能进行调用吗?我觉得不能,如果把new Singleton()放在private Singleton()中应该才可以.能跟我讲讲初始化的顺序和private关键字指得的外部是那些,是除了类本身外吗,谢谢各位能回答!

------解决方案--------------------
初始化顺序:
父类--静态变量 
父类--静态初始化块 
子类--静态变量 
子类--静态初始化块 
父类--变量 
父类--初始化块 
父类--构造器 
子类--变量 
子类--初始化块 
子类--构造器 

------解决方案--------------------
探讨
初始化顺序:
父类--静态变量
父类--静态初始化块
子类--静态变量
子类--静态初始化块
父类--变量
父类--初始化块
父类--构造器
子类--变量
子类--初始化块
子类--构造器

------解决方案--------------------
探讨
这里答案是1,0;怎么不是1,1呢?

------解决方案--------------------
探讨
这里答案是1,0;怎么不是1,1呢?