Java String.intern()方法示例

Java String.intern()方法示例

原文: https://howtodoinjava.com/java/string/java-string-intern-method-example/

Java String.intern()返回字符串池中存在的相等字符串字面值的引用。 如果字符串池中存在现有的字符串字面值,则返回其引用。 否则,将创建具有相同内容的新字符串,并返回对新字符串的引用。

使用String.equals()方法检查字符串是否相等。

1. 字符串池

字符串池是堆内存中的保留内存区域,Java 用于存储字符串常量。 请注意,默认情况下 Java 字符串是不可变的。

Java 在字符串池中仅存储每个不同String值的一个副本。 它有助于在程序执行期间重用String对象以节省内存。 在运行的程序中可能有很多对字符串的引用,但是在字符串池中只有字符串的副本。

1.1 两种创建字符串的方法

在 Java 中,我们可以通过两种方式创建字符串。

String str1 = new String("hello world");

String str2 = "hello world";

在上面的示例中,两种方法都用于创建字符串,但是建议稍后使用字符串字面值。 字符串字面值总是进入字符串池

当我们使用new关键字创建字符串时,将创建两个对象,即一个在堆区中,另一个在字符串常量池中。 创建的字符串对象引用始终指向堆区域对象。

要获取在字符串池中创建的相同对象的引用,请使用intern()方法。

2. Java String.intern()方法

String.intern()返回对字符串池中存在的相等字符串字面值的引用。

众所周知,所有字符串字面值都是在字符串池中自动创建的,因此intern()方法适用于通过'new'关键字创建的String对象。

String.intern()原生方法。 借助intern()方法,可以获得原始字符串对象对应的String常量池对象的引用。

3. Java String.intern()示例

Java 程序使用String.intern()方法插入字符串。

public class StringExample 
{
    public static void main(String[] args) 
    {
        //String object in heap
        String str1 = new String("hello world");

        //String literal in pool
        String str2 = "hello world";

        //String literal in pool
        String str3 = "hello world";

        //String object interned to literal
        //It will refer to existing string literal
        String str4 = str1.intern();

        System.out.println(str1 == str2);       //false
        System.out.println(str2 == str3);       //true
        System.out.println(str2 == str4);       //true
    }
}

程序输出。

false
true
true

在此示例中,我们学习了内联 Java 中的字符串。 这是本机方法,可提供高性能

参考文献:

Java 字符串指南

String Java 文档