Java對(duì)變量和對(duì)象的初始化做的是很好的!以下是本人自己寫(xiě)的一點(diǎn)...............
在Java中,普通變量(局部變量)需要明確初始化之后才能使用,否則編譯器將報(bào)錯(cuò)!
而對(duì)于對(duì)象的初始化Java也采用了C++引入的構(gòu)造器,構(gòu)造器是一個(gè)在創(chuàng)建對(duì)象時(shí)被自動(dòng)調(diào)用的特殊方法。這樣可以確保在用戶(hù)有能力操作對(duì)象之前對(duì)象已經(jīng)被初始化了。
在創(chuàng)建對(duì)象時(shí),域變量及域?qū)ο笫紫葧?huì)被初始化為起默認(rèn)值,然后才會(huì)根據(jù)你在構(gòu)造器中的賦值進(jìn)行改變!
在類(lèi)的內(nèi)部,變量定義的先后順序決定了初始化的順序。即使變量定義散布于方法定義之間,它們?nèi)耘f會(huì)在任何方法(包括構(gòu)造器)被調(diào)用之前得到初始化。
至于靜態(tài)數(shù)據(jù)域的初始化,大家都知道啦,無(wú)論你創(chuàng)建多少個(gè)對(duì)象,類(lèi)的靜態(tài)數(shù)據(jù)域都只有一份,它只占用一份存儲(chǔ)區(qū)域。并且它的初始化是發(fā)生在“非靜態(tài)域”之前,在類(lèi)被第一次加載的時(shí)候被初始化“一次”,只初始化一次!
在Java中,如果用戶(hù)沒(méi)有為類(lèi)提供一個(gè)構(gòu)造器,那么編譯器就會(huì)自動(dòng)幫你創(chuàng)建一個(gè)默認(rèn)構(gòu)造器(即無(wú)參構(gòu)造器),以便用戶(hù)能創(chuàng)建對(duì)象。但是如果用戶(hù)已經(jīng)定義了一個(gè)構(gòu)造器(無(wú)論是有參還是無(wú)參的),編譯器就不會(huì)再為你自動(dòng)創(chuàng)建默認(rèn)構(gòu)造器了!和C++一樣,Java中的構(gòu)造器是可以重載的,并且他們是可以互相調(diào)用的。當(dāng)構(gòu)造器調(diào)用時(shí)就涉及到了我們的關(guān)鍵字“this”(this這個(gè)關(guān)鍵字表示的是當(dāng)前對(duì)象的引用)。當(dāng)在一個(gè)構(gòu)造器中調(diào)用另一個(gè)構(gòu)造器時(shí)必須把調(diào)用語(yǔ)句置于本構(gòu)造器的第一行,如:
雖然在構(gòu)造器中用this關(guān)鍵字調(diào)用另一個(gè)構(gòu)造器,但是卻不能同時(shí)調(diào)用兩個(gè)以及更多。
posted on 2009-02-26 22:36
Jun Woo 閱讀(2055)
評(píng)論(1) 編輯 收藏