Java String intern()方法返回字符串對象的規(guī)范表示。
字符串intern()方法的語法為:
string.intern()
在這里,string是String該類的一個對象。
不帶任何參數(shù)
返回字符串的規(guī)范表示
字符串嵌入確保所有具有相同內(nèi)容的字符串使用相同的內(nèi)存。
假設(shè)我們有兩個字符串:
String str1 = "xyz"; String str2 = "xyz";
由于兩者str1和str2具有相同的內(nèi)容,因此這兩個字符串將共享相同的內(nèi)存。Java自動插入字符串字面量。
但是,如果使用new關(guān)鍵字創(chuàng)建字符串,則這些字符串將不會共享相同的內(nèi)存。例如,
class Main { public static void main(String[] args) { String str1 = new String("xyz"); String str2 = new String("xyz"); System.out.println(str1 == str2); // false } }
從該示例可以看到,兩者str1和str2具有相同的內(nèi)容。但是,它們并不相等,因為它們不共享相同的內(nèi)存。
在這種情況下,您可以手動使用intern()方法,以便對具有相同內(nèi)容的字符串使用相同的內(nèi)存。
class Main { public static void main(String[] args) { String str1 = new String("xyz"); String str2 = new String("xyz"); //str1和str2不共享相同的內(nèi)存池 System.out.println(str1 == str2); // false //使用intern()方法 //現(xiàn)在,str1和str2都共享同一個內(nèi)存池 str1 = str1.intern(); str2 = str2.intern(); System.out.println(str1 == str2); // true } }
正如你所看到的,str1和str2具有相同的內(nèi)容,但它們不是一開始相等。
然后,我們使用intern()方法,以便str1和str2使用相同的內(nèi)存池。 使用intern()之后,str1和str2相等。