Java String intern() 使用方法及示例 - Java教程

由网友 大卫 发布 阅读 10

Java String intern() 使用方法及示例 - Java教程

Java String(字符串) 方法

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

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

string.intern()

在这里,string是String该类的一个对象。

intern()参数

  • 不带任何参数

intern()返回值

  • 返回字符串的规范表示

什么是Java String 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相等。

Java String(字符串) 方法

Java String compareTo() Java程序复制文件