1.靜態(tài)方法什么時(shí)候初始化,在main前還是main后
?在main方法后,靜態(tài)方法是屬于類的,只有在調(diào)用時(shí)才初始化(main例外,main的調(diào)用是在初始化工作完成后程序進(jìn)入運(yùn)行狀態(tài)時(shí)),但靜態(tài)方法在內(nèi)存中只有一份;

2.構(gòu)造函數(shù)與繼承的關(guān)系
子類的構(gòu)造函數(shù)內(nèi)會(huì)包含一個(gè)父類構(gòu)造函數(shù),因?yàn)樵谧宇悩?gòu)造函數(shù)第一行會(huì)默認(rèn)調(diào)用父類構(gòu)造函數(shù),如果覆寫該行則可以自行控制父類構(gòu)造函數(shù)版本;可見得父類構(gòu)造函數(shù)和子類構(gòu)造函數(shù)得關(guān)系是“繼承”不是“覆寫”,(每個(gè))子類構(gòu)造函數(shù)繼承(包含)父類構(gòu)造函數(shù)的一個(gè)版本,并可以有自己的部分,類似繼承,子類不完全繼承父類方法并可由自己的方法,父類私有不能繼承。

3.接口沒有構(gòu)造函數(shù)的原因
1.接口里的方法完全抽象構(gòu)造函數(shù)沒有實(shí)現(xiàn)體,無意義
2.接口為了實(shí)現(xiàn)多繼承,子類構(gòu)造函數(shù)必須調(diào)用父類構(gòu)造函數(shù),如果接口有構(gòu)造函數(shù)子類不知道調(diào)用哪個(gè)父類構(gòu)造函數(shù)

4.String與StringBuffer

String類用來表示那些創(chuàng)建后就不會(huì)再改變的字符串,它是immutable的。
而StringBuffer類用來表示內(nèi)容可變的字符串,并提供了修改底層字符串的方法。


--當(dāng)我們進(jìn)行字符拼接時(shí),請(qǐng)使用StringBuffer類而非String類,因?yàn)榍罢邔⒈群笳呖焐习俦丁?/p>

的確,在程序的太多場合我們都會(huì)進(jìn)行字符串拼接工作,簡單的代碼示例如下:


String str="You are nice.";
str+="I love you so much.";


如果用StringBuffer類的話,代碼如下:


StringBuffer str= new StringBuffer("You are nice.");
str.append("I love you so much.");


??????? 從表面看來String類只用一個(gè)加號(hào)(+)便完成了字符串的拼接,
而StringBuffer類卻要調(diào)用一個(gè)append()方法,是否實(shí)現(xiàn)起來更簡潔,更單純呢?其實(shí)不然,
讓我們了解一下程序運(yùn)行內(nèi)部發(fā)生了哪些事情:


??????? 經(jīng)編譯后程序的bytecode(字節(jié)碼)展示出了實(shí)質(zhì):? 在用String類對(duì)象直接拼接時(shí),
JVM會(huì)創(chuàng)建一個(gè)臨時(shí)的StringBuffer類對(duì)象,并調(diào)用其append()方法完成字符串的拼接,
這是因?yàn)镾tring類是不可變的,拼接操作不得不使用StringBuffer類(并且--JVM會(huì)將"You are nice."和"I love you so much."
創(chuàng)建為兩個(gè)新的String對(duì)象)。
之后,再將這個(gè)臨時(shí)StringBuffer對(duì)象轉(zhuǎn)型為一個(gè)String,代價(jià)不菲!可見,在這一個(gè)簡單的一次拼接過程中,
我們讓程序創(chuàng)建了四個(gè)對(duì)象:兩個(gè)待拼接的String,一個(gè)臨時(shí)StringBuffer,
和最后將StringBuffer轉(zhuǎn)型成為的String--它當(dāng)然不是最初的str了,這個(gè)引用的名稱沒變,但它指向了新的String對(duì)象。


??????? 而如果直接使用StringBuffer類,程序?qū)⒅划a(chǎn)生兩個(gè)對(duì)象:
最初的StringBuffer和拼接時(shí)的String("I love you so much."),
也不再需要?jiǎng)?chuàng)建臨時(shí)的StringBuffer類對(duì)象而后還得將其轉(zhuǎn)換回String對(duì)象。


??????? 可以想象,當(dāng)我們的字符串要被循環(huán)拼接若干段時(shí),
用String類直接操作會(huì)帶來多少額外的系統(tǒng)開銷,生成多少無用的臨時(shí)StringBuffer對(duì)象,
并處理多少次無謂的強(qiáng)制類型轉(zhuǎn)換哪。

5. equals() 和 ==?
???equals() 比對(duì)象值,即屬性是否相等?
?? ==比引用,地址
?? 在編譯時(shí)期確定的兩個(gè)字符串對(duì)象引用相等(==)
?? 不在編譯期確定的兩個(gè)字符串字符串引用不相等