接着上一章節。
(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
我們下面在給一個例子:
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,代碼塊都會執行一次。
總結:這一章節主要讨論了顯性初始化靜态域,以及初始化非靜态域。
這一章節就到這裡,謝謝。
-----------------------------------
版權聲明:本文為部落客原創文章,未經部落客允許不得轉載。