31、String s = new String(“xyz”);創建了幾個字符串對象?
答:兩個對象,一個是靜態區的”xyz”,一個是用new創建在堆上的對象。
35、內部類可以引用它的包含類(外部類)的成員嗎?有沒有什麼限制?
答:一個內部類對象可以訪問創建它的外部類對象的成員,包括私有成員。
拓展:內部類與外部類之間的成員互相訪問
內部類可以訪問外部類的任何成員,包括private成員。
外部類訪問內部類的成員需要創建內部類的對象,之後可以訪問內部類的任何成員,包括private成員,需要注意的是成員內部類不可以有靜態成員。
當外部類的成員和內部類的成員重名時單單用this是區分不了的。在內部類中訪問外部類的成員時可以用如下語法區分
<外部類類名>.this.<外部類中需要被訪問的成員名>;
39、如何實現字符串的反轉及替換?
答:方法很多,可以自己寫實現也可以使用String或StringBuffer/StringBuilder中的方法。有一道很常見的面試題是用遞歸實現字符串反轉,代碼如下所示:
public static String reverse(String originStr) {
if(originStr == null || originStr.length() <= 1)
return originStr;
return reverse(originStr.substring(1)) + originStr.charAt(0);
}