String是Java中儲存字元序列的類,它屬於java.lang包。一旦創建了 String 對象,就無法修改它們(不可變)。
所有 String 物件都儲存在堆區域中的單獨記憶體位置,稱為 String 常數池。
每當定義字串值時,JVM都會在字串常數池中建立一個具有給定值的字串物件。因此,如果執行上述程序,則會在字串常數池中建立兩個字串值。
此方法從唯一字串值池傳回目前字串的值。每當您在特定 String 上呼叫此方法時,如果 String 常數池已包含與其相等的 String (根據 Object 類別的 equals 方法),則它將被傳回。如果不是,則將目前字串新增至字串常數池中,傳回對其的參考。
即如果您對兩個具有相同內容的字串呼叫此方法,則可以保證它們共享相同的記憶體。
此方法可以方便地減少出現多個重複值時所佔用的記憶體。
下面我們將建立兩個內容相同的字串(使用 new 關鍵字),並使用「==」運算子對它們進行比較。儘管兩個物件具有相同的值,但由於它們不引用相同的物件(記憶體),因此結果將為 false。
public class InternExample { public static void main(String args[]) { String str1 = new String("Hello"); str1 = str1.intern(); String str2 = "Hello"; str2 = str2.intern(); System.out.println(str1.equals(str2)); } }
false
但是,如果您在比較兩個物件之前呼叫intern 方法,因為它確保兩個物件共享相同的記憶體(如果它們具有相同的內容),則結果將為true。
public class InternExample { public static void main(String args[]) { String str1 = new String("Hello"); str1 = str1.intern(); String str2 = new String("Hello"); str2 = str2.intern(); System.out.println(str1==str2); } }
true
以上是String intern() 方法在 Java 中的作用是什麼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!