靜態(tài)代碼塊什么時(shí)候執(zhí)行 Java中,構(gòu)造代碼塊和構(gòu)造函數(shù)有什么區(qū)別?
Java中,構(gòu)造代碼塊和構(gòu)造函數(shù)有什么區(qū)別?構(gòu)造代碼塊:在沒有static關(guān)鍵字的類中直接定義的代碼塊稱為{}構(gòu)造代碼塊。構(gòu)造代碼塊在創(chuàng)建對(duì)象時(shí)被調(diào)用,并且每次創(chuàng)建對(duì)象時(shí)都會(huì)被調(diào)用,并且構(gòu)造代碼塊的執(zhí)
Java中,構(gòu)造代碼塊和構(gòu)造函數(shù)有什么區(qū)別?
構(gòu)造代碼塊:在沒有static關(guān)鍵字的類中直接定義的代碼塊稱為{}構(gòu)造代碼塊。構(gòu)造代碼塊在創(chuàng)建對(duì)象時(shí)被調(diào)用,并且每次創(chuàng)建對(duì)象時(shí)都會(huì)被調(diào)用,并且構(gòu)造代碼塊的執(zhí)行順序優(yōu)先于類構(gòu)造函數(shù)。
構(gòu)造函數(shù):用于初始化對(duì)象,是初始化相應(yīng)對(duì)象,它是有針對(duì)性的函數(shù)之一。
特性:
1:函數(shù)的名稱與類的名稱相同。
2:無(wú)需定義返回值類型。
3:函數(shù)沒有特定的返回值。
底層分析:通過(guò)反編譯,我們可以看到構(gòu)造代碼塊中的代碼也在構(gòu)造方法中執(zhí)行。在編譯時(shí),編譯器似乎會(huì)默認(rèn)地將構(gòu)造函數(shù)塊中的代碼移動(dòng)到構(gòu)造函數(shù),并移動(dòng)到構(gòu)造函數(shù)內(nèi)容的前面。
java中詳解靜態(tài)代碼塊,構(gòu)造代碼塊,構(gòu)造方法。求簡(jiǎn)單易懂的解釋?
靜態(tài)代碼塊:只要使用一個(gè)類,該類的靜態(tài)代碼塊將首先執(zhí)行。例如,當(dāng)您新建一個(gè)dog()對(duì)象時(shí),將首先執(zhí)行I=1,然后將執(zhí)行public dog(){}方法。Pulic dog()是一個(gè)與類同名且沒有返回值的方法,即構(gòu)造方法。構(gòu)造函數(shù)用于初始化對(duì)象。例如,可以在其中寫入I=2。當(dāng)你用dog d=new dog()執(zhí)行這個(gè)代碼時(shí),它是這樣的:首先I=0,然后執(zhí)行靜態(tài)代碼塊,此時(shí)I=1,最后執(zhí)行public dog()I=2
在回答這個(gè)問(wèn)題之前,我想說(shuō)如果你自己寫手寫代碼,最好至少寫一個(gè)無(wú)參數(shù)的構(gòu)造方法。養(yǎng)成一個(gè)好習(xí)慣是很重要的。
好的,讓我們開門見山。
在Java中編寫類時(shí)必須編寫構(gòu)造函數(shù)嗎?
我的答案是肯定的。
你為什么這么說(shuō)?構(gòu)造函數(shù)用于構(gòu)造此類的實(shí)例對(duì)象。Java語(yǔ)言通過(guò)new關(guān)鍵字調(diào)用構(gòu)造函數(shù)來(lái)返回這個(gè)類的實(shí)例。
構(gòu)造方法是類創(chuàng)建對(duì)象的基本方法。如果類沒有構(gòu)造方法,則該類通常無(wú)法創(chuàng)建實(shí)例。因此,Java語(yǔ)言提供了一個(gè)函數(shù):
如果我們不為類編寫構(gòu)造方法,系統(tǒng)將為類提供默認(rèn)的無(wú)參數(shù)構(gòu)造方法。
也許有些朋友會(huì)問(wèn),我怎么能在我們的項(xiàng)目中看不到構(gòu)造函數(shù)?
我的猜想有以下可能:
開發(fā)人員更了解這種機(jī)制,懶得編寫
忘記編寫
使用Lombok或其他自定義批注
@noargsconstructor:對(duì)類進(jìn)行批注;為類提供無(wú)參數(shù)的構(gòu)造方法
@allargsconstructor對(duì)類進(jìn)行注釋;為類提供一個(gè)完整的參數(shù)構(gòu)造方法
希望對(duì)你有所幫助,手機(jī)打字不容易,讓我們不要擴(kuò)展更多的內(nèi)容。
如果您感興趣,歡迎關(guān)注。如果你們有什么問(wèn)題,可以互相交流學(xué)習(xí)。[呵欠
構(gòu)造函數(shù)的方法名必須與類名相同。工法是一種特殊的工法,具有以下特點(diǎn)。(1) 構(gòu)造函數(shù)的方法名必須與類名相同。(2) 構(gòu)造函數(shù)沒有返回類型,不能定義為void。它不在方法名之前聲明方法類型。(3) 構(gòu)造方法的主要功能是完成對(duì)象的初始化。它可以在定義對(duì)象時(shí)將參數(shù)傳遞給對(duì)象的域。(4) 構(gòu)造方法不能由程序員調(diào)用,而是由系統(tǒng)調(diào)用。(5) 一個(gè)類可以定義多個(gè)構(gòu)造方法。如果在定義類時(shí)沒有定義構(gòu)造方法,編譯器將自動(dòng)插入一個(gè)不帶參數(shù)的默認(rèn)構(gòu)造函數(shù),該構(gòu)造函數(shù)不會(huì)執(zhí)行任何代碼。(6) 構(gòu)造方法可以重載,通過(guò)參數(shù)的數(shù)量、類型或順序來(lái)區(qū)分一個(gè)事物和一個(gè)意識(shí)。沒有區(qū)別!構(gòu)造函數(shù)是一種特殊的方法。它主要用于在創(chuàng)建對(duì)象時(shí)初始化對(duì)象,即為對(duì)象成員變量指定初始值。在創(chuàng)建對(duì)象的語(yǔ)句中,它總是與new操作符一起使用。特別是,一個(gè)類可以有多個(gè)構(gòu)造函數(shù),這些構(gòu)造函數(shù)可以根據(jù)其參數(shù)的數(shù)量或參數(shù)的類型來(lái)區(qū)分。構(gòu)造方法是一種特殊的方法,它與類具有相同的名稱,并且沒有返回值類型。對(duì)象創(chuàng)建是通過(guò)構(gòu)造方法完成的,其主要功能是初始化對(duì)象。當(dāng)一個(gè)類實(shí)例化一個(gè)對(duì)象時(shí),構(gòu)造函數(shù)被自動(dòng)調(diào)用。構(gòu)造函數(shù)和其他方法一樣,可以重載。