谁给我解释下这段代码的输出原理?

class singlen {
private static singlen obj=new singlen();
public static int count1;
public static int count2=5;

private singlen(){
    //count1++;
    System.out.println("councstor"+count2);
    count2++;
}
public static singlen getInstence(){
    return obj;
}

}

class dd{
public static void main(String[] args){
singlen s=singlen.getInstence();
System.out.println("count1=="+s.count1);
System.out.println("count2=="+s.count2);

}

}

如题 谢谢

其实就是初始化的一个先后顺序问题
先执行构造函数
[code="java"]
private singlen(){
count1++;
count2++;
}
[/code]
count1和count2的值都变成1,然后在进行变量的赋值
[code="java"]
private static singlen obj=new singlen();
public static int count1;
public static int count2=5;
[/code]
count1没有值,跳过,count2赋值为5,

所以最后打印室1和5

这个什么输出原理? 能不能说明白的

那 你的private static int count1;
有值吗?

那你的输出应该是

count1==null
count2==5

这就是一个简单的单例模式。