首页 > 代码库 > 类成员变量初始化的问题

类成员变量初始化的问题

class window{
    window(int maker){
        System.out.println("window"+maker);
    }
}
class House{
    window w1 ;//new window(1);
    window w3 = new window(3);
    House(){
        System.out.print("House");
        w3 = new window(33);
    }
    window w4 = new window(4);
}
class Demo {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        House h = new House();
        //System.out.println("hello world");
    }

}

//output:
window3
window4
Housewindow33

今天在看编程思想的时候,突然发现自己的java基础有多渣,习惯了get/set方法后,一直以为类成员变量在类初始化的时候只有调用类成员变量的时候并手动将其输出才可以其打印出来。看了上面这个例子才发现如果类成员变量在类内部初始化后(上例中的window类的构造器初始化后),在new一个House对象出来的时候,编译器会自动打印已初始化的类成员。 -(PS:我好渣 - -!)

而且原书讲到w3虽然初始化了两次,效率虽然不高,但是如果存在重载构造器,这样可以使初始化得到保证。

类成员变量初始化的问题