為什么創(chuàng)建類對(duì)象hello2 會(huì)再執(zhí)行一次程序呀 TAT
為什么創(chuàng)建類對(duì)象hello2 會(huì)再執(zhí)行一次 main方法上面的 那些語句? ?求大家點(diǎn)贊頂一下 ,大神給個(gè)回復(fù)呀 TAT
為什么創(chuàng)建類對(duì)象hello2 會(huì)再執(zhí)行一次 main方法上面的 那些語句? ?求大家點(diǎn)贊頂一下 ,大神給個(gè)回復(fù)呀 TAT
2016-07-08
舉報(bào)
2016-07-08
你說的上面那些語句是構(gòu)造函數(shù)、初始化塊嗎?在新建對(duì)象時(shí)候,都會(huì)調(diào)用類的構(gòu)造函數(shù)、初始化塊,對(duì)剛生成的對(duì)象hello2進(jìn)行初始化的。這和原本你創(chuàng)建過其他對(duì)象無關(guān)。但是如果是靜態(tài)的初始化塊,只會(huì)在類加載時(shí)候被執(zhí)行一次??梢钥纯碕AVA入門第二季中的---Java 中的 static 使用之靜態(tài)初始化塊這一部分內(nèi)容。
HelloWorld hello2=new HelloWorld();代碼做了以下事情:
1、右邊的“new HelloWorld”,是以HelloWorld類為模板,在堆空間里創(chuàng)建一個(gè)HelloWorld類對(duì)象(也簡稱為HelloWorld對(duì)象)。?
2、末尾的()意味著,在對(duì)象創(chuàng)建后,立即調(diào)用HelloWorld類的構(gòu)造函數(shù),對(duì)剛生成的對(duì)象進(jìn)行初始化。構(gòu)造函數(shù)是肯定有的。如果沒創(chuàng)建,Java會(huì)補(bǔ)上一個(gè)默認(rèn)的無參構(gòu)造函數(shù)。
3、左邊的“HelloWorld hello2”創(chuàng)建了一個(gè)HelloWorld 類引用變量。
4、“=”操作符使對(duì)象引用指向剛創(chuàng)建的那個(gè)HelloWorld對(duì)象。
2016-07-08
因?yàn)樵僖淮螌?duì)象實(shí)例化,來調(diào)用上面的語句,故再執(zhí)行一次。