Java字符串intern()方法
字符串 intern()
方法的语法是:
string.intern()
这里,string
是 String
类的一个对象。
intern() 方法参数
intern()
方法不接受任何参数。
intern() 方法返回值
- 返回字符串的规范表示形式
什么是 Java 字符串内部化(Interning)?
字符串内部化确保所有内容相同的字符串使用相同的内存。
假设我们有这两个字符串:
String str1 = "xyz";
String str2 = "xyz";
由于 str1
和 str2
的内容相同,这两个字符串将共享相同的内存。Java 会自动内部化字符串字面量。
然而,如果你使用 new
关键字创建字符串,这些字符串就不会共享相同的内存。例如,
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
的内容相同。然而,它们并不相等,因为它们不共享相同的内存。
在这种情况下,你可以手动使用 intern()
方法,使得具有相同内容的字符串使用相同的内存。
示例:Java String intern() 方法
class Main {
public static void main(String[] args) {
String str1 = new String("xyz");
String str2 = new String("xyz");
// str1 和 str2 不共享相同的内存池
System.out.println(str1 == str2); // false
// 使用 intern() 方法
// 现在 str1 和 str2 共享相同的内存池
str1 = str1.intern();
str2 = str2.intern();
System.out.println(str1 == str2); // true
}
}
正如你所看到的,str1
和 str2
的内容相同,但最初它们并不相等。
然后我们使用 intern()
方法,使得 str1
和 str2
使用相同的内存池。使用 intern()
之后,str1
和 str2
就相等了。