Java 菜鸟教程

Java 流程控制

Java 数组

Java 面向对象(I)

Java 面向对象(II)

Java 面向对象(III)

Java 异常处理

Java 列表(List)

Java Queue(队列)

Java Map集合

Java Set集合

Java 输入输出(I/O)

Java Reader/Writer

Java 其他主题

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

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(字符串) 方法