字符串 intern()
方法的语法是
string.intern()
这里,string是String
类的一个对象。
intern() 参数
intern()
方法不接受任何参数。
intern() 返回值
- 返回字符串的规范表示形式
什么是 Java String Interning?
String Interning 确保内容相同的字符串使用相同的内存。
假设我们有这两个字符串
String str1 = "xyz";
String str2 = "xyz";
由于 str1
和 str2
具有相同的内容,这两个字符串将共享相同的内存。Java 会自动 intern 字符串字面量。
但是,如果你使用 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 and str2 doesn't share the same memory pool
System.out.println(str1 == str2); // false
// using the intern() method
// now both str1 and str2 share the same memory pool
str1 = str1.intern();
str2 = str2.intern();
System.out.println(str1 == str2); // true
}
}
可以看出,str1 和 str2 具有相同的内容,但最初它们不相等。
然后我们使用 intern()
方法,以便 str1 和 str2 使用相同的内存池。在使用 intern()
之后,str1 和 str2 是相等的。