Java String intern()方法示例

Java的String实习生()返回一个等于字符串文字存在于串池的参考。如果字符串池中存在现有的字符串文字,则返回其引用。否则,将创建具有相同内容的新字符串,并返回对新字符串的引用。

使用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'关键字创建的字符串对象。

字符串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字符串指南Java Doc的指南

saigon has written 1445 articles

Leave a Reply