java笔记一:类成员的初始化顺序

  最近一直在看《thinking in java》一书,香港虚拟主机,感觉里面东西讲的很细,香港服务器租用,很多东西都没有接触过,是值得各位java程序员仔细品味的一本好书。

  今天看了关于类成员初始化那节,以前对于成员初始化顺序没有考虑那么多,没有在意初始化的顺序。今天特意仔细研究了一番。

  一个类中,最首先被初始化的是静态成员,也就是有关键字static修饰的成员。只要一个类被使用也就是创建对象或者调用了该类的某个静态方法时静态成员就都会被初始化,并且静态数据在内存中只占用一份存储区域,无论创建多少个对象,静态数据被所有对象共享。

  初始化静态成员后再初始化非静态成员。对于非静态成员之间,也是有初始化顺序的,变量定义的顺序决定了初始化的顺序(无论成员变量在哪里定义,网站空间,都会在函数调用之前得到初始化)

  直接定义成员初始化完成后才会执行构造函数初始化。

  具体看例子:

House {Window w1 = new Window(1); 4public House() { 5System.out.println(“House()”); 6w3 = new Window(33); 7 } 8Window w2 = new Window(2); 9void f(){10System.out.println(“f()”);11 } f1(){13System.out.println(“static f1()”);14 }Window w4 = args main(String[] args) {21House h = new House();22 h.f();23 House.f1();24 }25 26 }27 class Window{28public Window(int maker) {29System.out.println(“Window(“+maker+”)”);30 }31 }便是不再存在着任何我曾经对你有过的希望。

java笔记一:类成员的初始化顺序

相关文章:

你感兴趣的文章:

标签云: