從頭認識java-4.7 構造器初始化(3)
接著上一章節。
(4)顯性初始化靜態域
通過靜態代碼塊來初始化某些屬性域。
package com.ray.testobject;public class Test {private static int id;private static String name;static {id = 0;name = abc;System.out.println(id: + id);System.out.println(name: + name);}public static int getId() {return id;}public static void main(String[] args) {// new Test();System.out.println(Test.getId());}}
如果我們把new Test()放開,得到也是下面的結果。因為代碼塊只會執行一次。
輸出:
id:0
name:abc
0
我們下面在給一個例子:
package com.ray.testobject;public class Test {private static int id = 0;private static String name;static {System.out.println(id: + id);name = abc;System.out.println(name: + name);}public Test() {System.out.println(create Test);}public static void main(String[] args) {new Test();new Test();}}
輸出:
id:0
name:abc
create Test
create Test
(5)初始化非靜態域
package com.ray.testobject;public class Test {private String name;{name = abc;System.out.println(name: + name);}public static void main(String[] args) {new Test();new Test();}}
輸出:
name:abc
name:abc
初始化非靜態域,每一次的new,代碼塊都會執行一次。
總結:這一章節主要討論了顯性初始化靜態域,以及初始化非靜態域。
這一章節就到這裡,謝謝。
-----------------------------------