關於java中2個String相等不相等的總結

 可以看出String類被final修飾,表明這個類不能被繼承。

  String 類代表字符串。Java 程序中的所有字符串字面值(如"abc" )都作爲此類的實例來實現。就是說在 String a= ”ab“中把這個”ab“當成String類的一個實例來看且是final的。關於final關鍵字可以參照我上一篇轉載的blog理解的很到位。

  字符串是常量;它們的值在創建之後不能改變。字符串緩衝區支持可變的字符串。因爲 String 對象是不可變的,所以可以共享它們。這句話截選java..API那麼應該怎麼理解呢?

  且聽我慢慢道。可以這麼說吧String類維護了一個池,把程序中的String對象放到池子裏面,於是在我們編碼的過程中只要用到相同值的String就是同一個對象。舉個例子來給你們看看,

String a =“abc” String b = "abc" 因爲 “abc” 是一個字符串字面常數所以它是放在字符串池中的,因而a和b實際引用的是同一個字符串對象因而

a = b

     再進一步來一個問題:string a = “abc”  String b =“a“+ “bc” 現在的a和b是不是還是那樣a==b呢? 聽我解釋:b是常量表達式(編譯時候能確定的就算常量表達式,運行時候確定的就不算)計算出來的也就是所謂的字符串的拼接。因而a=b還是正確的。其實對於這種字符串拼接的情況可以歸根結底一句話總結到位。判斷相等不相等是String 對象在編譯的時候他會把你拼接起來去常量池中尋找是否存在相等的String對象。運行期的不算所謂運行期不算就是像這種情況。String d = ”abcd“  String e =a+”d“  此時e !=d這就不是我前面提到的拼接,因爲e在是在運行期才能確定出的字符串。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章