面試難點

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);
  }
發佈了57 篇原創文章 · 獲贊 6 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章