📜  Java String intern()

📅  最后修改于: 2020-09-27 02:39:34             🧑  作者: Mango

Java String intern()方法返回字符串对象的规范表示。

字符串 intern()方法的语法为:

string.intern()

在这里, 字符串String类的对象。


intern()参数

intern()方法不接受任何参数。


intern()返回值
  • 返回字符串的规范表示

什么是Java String Interning?

字符串实习确保所有具有相同内容的字符串使用相同的内存。

假设,我们这两个字符串:

String str1 = "xyz";
String str2 = "xyz";

由于str1str2具有相同的内容,因此这两个字符串将共享相同的内存。 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

  }
}

从该示例可以看出, str1str2的内容相同。但是,它们并不相等,因为它们不共享相同的内存。

在这种情况下,您可以手动使用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
  }
}

如您所见, str1str2的内容相同,但是最初它们并不相等。

然后,我们使用intern()方法,以便str1str2使用相同的内存池。使用intern()str1str2相等。