Java原始碼閱讀-String中的private final char value[];

AisaMaral發表於2024-04-24
    /** The value is used for character storage. */
    private final char value[];

在Java的原始碼中是這樣來實現String對字串的儲存的

首先使用 final 關鍵字來修飾這個變數,來保證value不會被重寫,確保字串的內容在建立後不會被修改,從而保持字串的不可變性。

final是Java中的保留關鍵字,可以用來修飾類,方法和變數。其中,被final修飾的類不能被繼承即不能擁有自己的子類,被final修飾方法不能被重寫,final修飾的屬性、變數初始化之後不能被修改。

同樣,String物件也使用了 final 進行修飾,因此String類不能被繼承

透過 final 修飾,String獲得了這些特性

  1. 不可變性 透過將字元陣列宣告為 final,可以確保字串的內容在建立後不會被修改,從而保持字串的不可變性。
  2. 安全性 由於字串是不可變的,其他程式碼無法直接修改字串的內容。這種設計有助於避免在多執行緒環境下出現併發訪問和修改字串內容的問題,增加了程式的安全性。
  3. 效能 由於字串是不可變的,可以在編譯時或執行時對字串進行最佳化,例如字串常量池。同時,直接訪問字元陣列可以更高效地進行字串操作,如獲取特定位置的字元、擷取子串等。
  4. 共享 由於字串常量是不可變的,可以被多個字串物件共享。這種共享節約了記憶體空間,因為相同的字串常量在記憶體中只會儲存一份,多個字串物件可以引用同一份字元陣列。
  5. 簡化實現 字元陣列是一個基本資料結構,可以直接操作其中的字元,而不需要複雜的資料結構或演算法來表示字串。

相關文章