簡體   English   中英

字符串不變性,流行測驗

[英]String immutability, pop quiz

關於字符串不可變性有很多問題,但是我還沒有找到以下原因的答案:

1) "TEST".equals("TEST")            // TRUE obviously
2) "TEST" == "TEST"                 // Also TRUE since String's are immutable
3) "TEST" == "T" + "E" + "S" + "T"  // TRUE, but why? Due to compiler optimalization?
4) "TEST" == new String("TEST");    // FALSE, because you explicitly request a new String?

如有必要,誰能糾正我並進一步詳細解釋3和4? 非常感謝!

串聯發生在編譯時,因此String進入了池,這就是為什么得到true的原因。

關於最后一個,創建了一個新對象,因為您使用的是new關鍵字,並通過==比較引用,因此您將得到false

這與不變性無關。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM