[Java] 為什么字符串比較不能用兩個等號(==)


 


Java中,使用"=="比較字符串時,判斷的是兩個字符串是否存放在相同的位置。如果兩個字符串存放在相同的位置,那么它們就是相同的,使用"=="比較的結果也就是True。但Java虛擬機並不總是使兩個相同的字符串共享一個位置,它可能會存放多個相同的拷貝在不同的位置。


只有通過字面賦值的時候,相同的字符串才會共享位置:


例如:x = "Hello"; y = "Hello";

x == y; 就是True

x == "Hello"; 也是True

但如果另有一個變量z,不是通過這種字面的方式被賦值的,即便z的值也是"Hello",

x == z; 的結果卻是False

例如 x.substring(0,3) == "Hel"; 的結果就是False


因此,在進行字符串比較時,不推薦使用"==",推薦使用equals函數


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM