初始化

??Java編譯器并不是簡單的為每個(gè)引用都創(chuàng)建一個(gè)默認(rèn)對(duì)象,如果想初始化這些引用可以在代碼中的下列位置進(jìn)行:
1.在定義對(duì)象得地方,這意味著他們總是能夠被構(gòu)造器調(diào)用之前被初始化。
2.在類的構(gòu)造器中。
3.就在正要使用這些對(duì)象之前,這種方式稱為惰性初始化,在生成對(duì)象不值得級(jí)不必每次生成對(duì)象的情況下,減少額外的負(fù)擔(dān)。
4.使用實(shí)例初始化。

class Soap {
    private String s;

    Soap() {
        System.out.println("Soap()");
        s = "Constructed";
    }

    @Override
    public String toString() {
        return s;
    }
}

public class Bath {
    private String 
            s1 = "Happy", // 定義初始化
            s2 = "Happy",
            s3, s4;
    private Soap castile;
    private int i;
    private float toy;

    public Bath() {
        System.out.println("Inside Bath()");
        s3 = "Joy";
        toy = 3.14f;
        castile = new Soap(); // 在類的構(gòu)造器中被初始化
    }

    {
        i = 47; // 實(shí)例初始化
    }

    @Override
    public String toString() {
        if (s4 == null) 
            s4 = "Joy"; // 惰性初始化
        return "s1 = " + s1 + "\n" +
                "s2 = " + s2 + "\n" +
                "s3 = " + s3 + "\n" +
                "s4 = " + s4 + "\n" +
                "i = " + i + "\n" +
                "toy = " + toy + "\n" +
                "castile = " + castile;
    }

    public static void main(String[] args) {
        Bath b = new Bath();
        System.out.println(b);
    }
} /* Output:
Inside Bath()
Soap()
s1 = Happy
s2 = Happy
s3 = Joy
s4 = Joy
i = 47
toy = 3.14
castile = Constructed
*///~
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容