字串池的小問題

2021-06-01 07:30:41 字數 374 閱讀 1864

public class teststr 

}

執行的結果:

true

false

true

迷惑是在這裡system.out.println(s1==s5);// 返回false

因為s5又是乙個新的物件,當連線字串時,只要有乙個不是字串常量("abc"這種稱為字串常量),那麼連線後就直接在堆記憶體中建立乙個新的物件,而不去string池中查詢。

而使用常量字串進行連線時,如"lo"+"ve",它會拿連線後的字串在 string池中找是否已經存在,如果存在則不再建立新的字串,而是返回已存在的字串的引用;如果不存在則在string池中建立乙個字串,然後返回它的引用。

字串留用與字串池

1 關於字串操作對應用程式效能的影響 字串相等性檢查是應用程式常見的操作,於此同時,這也是一種嚴重損害效能的操作.執行序號 字串的二進位制 相等行檢查時,clr會進行以下操作 1 判斷字串的長度是否相等,不相等,比較結果直接返回false,如果相等,繼續下一步操作 2 比較字串的長度相等,clr會比...

字串擷取的一些小問題

substr start,length substring start,end 或 substring from,to slice start,end 1 如果將substring和slice都只填乙個引數,還換成負數,會怎麼樣 var str helloworld console.log str....

字串緩衝池

看到乙個關於字串緩衝池的討論 大家先來看看一段奇怪的程式 public class teststring 這個程式真是簡單啊!可是有什麼問題呢?1.來自 string 的憂慮 上面這段程式中,到底有幾個物件呢?可能很多人脫口而出 兩個,s1 和 s2 為什麼?string 是 final 類,它的值...