天天看點

java定義顯性構造函數_從頭認識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

我們下面在給一個例子:

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,代碼塊都會執行一次。

總結:這一章節主要讨論了顯性初始化靜态域,以及初始化非靜态域。

這一章節就到這裡,謝謝。

-----------------------------------

版權聲明:本文為部落客原創文章,未經部落客允許不得轉載。