為什麼 Java 中的 String 類不可變或 final?


不可變的字串表示我們不能修改物件本身,但我們可以修改對該物件的引用。字串設為 final 以防止其他人對其進行擴充套件並破壞其不變性。

  • 安全性引數通常表示為網路連線、資料庫連線 URL、使用者名稱/密碼等中的字串。如果它可變,則這些引數可以輕鬆修改。

  • 同步和併發使得字串無法更改,自動使其執行緒安全,從而解決了同步問題。

  • 快取記憶體當編譯器最佳化我們的 String 物件時,假設兩個物件具有相同的值(a ="test",b ="test"),因此我們只需要一個字串物件(對於 a 和 b,這兩個物件將指向同一物件)。

  • 類載入字串用作類載入的引數。如果可變,則可能導致載入錯誤的類(因為可變物件會改變其狀態)。

示例

public class StringImmutableDemo {
   public static void main(String[] args) {
      String st1 = "Tutorials";
      String st2 = "Point";
      System.out.println("The hascode of st1 = " + st1.hashCode());
      System.out.println("The hascode of st2 = " + st2.hashCode());
      st1 = st1 + st2;
      System.out.println("The Hashcode after st1 is changed : "+ st1.hashCode());
   }
}

輸出

The hascode of st1 = -594386763
The hascode of st2 = 77292912
The Hashcode after st1 is changed : 962735579

更新時間: 2023 年 11 月 17 日

8 千+ 瀏覽量

開啟您的 職業生涯

完成該課程獲得認證

開始學習
廣告