Java String intern()

字符串 intern() 方法的语法是

string.intern()

这里,stringString类的一个对象


intern() 参数

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


intern() 返回值

  • 返回字符串的规范表示形式

什么是 Java String Interning?

String Interning 确保内容相同的字符串使用相同的内存。

假设我们有这两个字符串

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

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

  }
}

从这个例子中可以看出,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 是相等的。

你觉得这篇文章有帮助吗?

我们的高级学习平台,凭借十多年的经验和数千条反馈创建。

以前所未有的方式学习和提高您的编程技能。

试用 Programiz PRO
  • 交互式课程
  • 证书
  • AI 帮助
  • 2000+ 挑战