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相等。