JAVA構(gòu)造方法?
JAVA構(gòu)造函數(shù)是類的一種特殊方法,用來初始化類的一個(gè)新對(duì)象。Java中的每個(gè)類都有一個(gè)默認(rèn)的構(gòu)造函數(shù),它必須與類名同名,并且沒有返回類型。構(gòu)造函數(shù)的默認(rèn)返回類型是對(duì)象類型本身,構(gòu)造函數(shù)不能被static、final、synchronized、abstract和native修飾。
提示:構(gòu)造函數(shù)是用來初始化一個(gè)新對(duì)象的,用static來修飾是沒有意義的;構(gòu)造函數(shù)不能被子類繼承,用final和abstract來修飾是沒有意義的;多個(gè)線程不會(huì)同時(shí)用同一個(gè)內(nèi)存地址創(chuàng)建同一個(gè)對(duì)象,所以沒必要用synchroniz
Java類初始化的時(shí)候會(huì)調(diào)用get方法嗎?
不,初始化類時(shí)調(diào)用構(gòu)造函數(shù)而不是G
class構(gòu)造函數(shù)加載順序?
在java中,沒有CLSS構(gòu)造函數(shù)加載順序的概念,只有類文件的加載順序。將java類更改編譯成類文件后,類的加載順序如下:
靜態(tài)代碼按順序初始化——父類構(gòu)造函數(shù)——變量初始化——實(shí)例代碼塊——自構(gòu)造函數(shù)。
Java中的類,成員變量的值,在聲明的時(shí)候直接賦值與在構(gòu)造函數(shù)中再賦值,這個(gè)是無所謂的,還是有什么規(guī)矩?
在聲明時(shí),不同的類型(基本類型和內(nèi)置類)都有默認(rèn)值,比如int為0,Object為null,無論是否賦值。
因此,如果沒有特殊的初始賦值,就不需要在構(gòu)造函數(shù)中初始化屬性/字段,增加了創(chuàng)建對(duì)象時(shí)不必要的負(fù)擔(dān);換句話說,如果在對(duì)象創(chuàng)建期間沒有特殊的初始化需求,默認(rèn)的構(gòu)造函數(shù)不需要編寫,JVM知道如何處理。
所示的構(gòu)造函數(shù)有自己的用途。它讓您有機(jī)會(huì)在創(chuàng)建對(duì)象時(shí)進(jìn)行一些定制和初始化工作。例如,如果您的班級(jí)中有一名成員:
私人列表成員成員;
你想統(tǒng)一getMembers()的行為,就是不管有沒有成員,都返回一個(gè)List對(duì)象,而不是有時(shí)候?yàn)閚ull,有時(shí)候?yàn)長(zhǎng)istltMembergt,給調(diào)用者造成麻煩。
然后在構(gòu)造函數(shù)中解決這個(gè)問題,并添加一行代碼,如:
新數(shù)組列表成員gt()
這樣,即使這個(gè)對(duì)象剛剛被new釋放,對(duì)它調(diào)用getMembers也不會(huì)返回null。