静态成员变量初始化的疑惑
/**
*下面的程序为的是只生成一个Chinese对象,在除Chinese类之外的类不能再生成Chinese对象。
*我的疑惑是Chinese ch1 = Chinese.getInstance();后调用getInstance(),在这个方法中return obj
*这个obj在什么时候加载呀。难不成return obj后,Chinese obj = new Chinese();这条语句就自动
*执行吗?
*obj在类加载的时候生成,但obj初始化后就能生成一个Chinese对象吗?
*/
class Chinese
{
static Chinese obj = new Chinese();
private String name;
private int age;
public void sing() {
System.out.println("啊!!!");
}
private Chinese() {
}
public static Chinese getInstance() {
return obj;
}
}
public class TestChinese
{
public static void main(String[] args) {
Chinese ch1 = Chinese.getInstance();
Chinese ch2 = Chinese.getInstance();
System.out.println(ch1 == ch2);
}
}
------解决方案--------------------加载Chinese类时就执行了。
------解决方案--------------------Chinese obj = new Chinese();这条语句就自动执行吗?
因为obj是静态的所以它在类加载的时候就生成了,不会在return obj后执行
obj在类加载的时候生成,但obj初始化后就能生成一个Chinese对象吗?
对
------解决方案--------------------在类加载的时候会完成一系列操作,包括初始化静态成员变量。