📜  Java String intern()(1)

📅  最后修改于: 2023-12-03 14:42:16.341000             🧑  作者: Mango

Java String intern()

在Java中,当我们创建一个字符串对象时,它会被存储在字符串常量池中。如果我们创建了多个相同的字符串对象,那么这些对象也会被存储在字符串常量池中。

Java String intern()是一个实例方法,它可以将字符串对象存储在字符串常量池中,并返回该字符串对象在字符串常量池中的引用。如果该字符串对象已经存在于字符串常量池中,那么intern()方法将返回该对象在字符串常量池中的引用。

下面是intern()方法的语法:

public String intern()
用法

下面是一个使用intern()方法的示例:

String str1 = "hello";
String str2 = new String("hello");
String str3 = str2.intern();

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

在上面的示例中,我们首先创建了一个字符串对象"hello",并将其存储在字符串常量池中。然后,我们创建了另一个字符串对象str2,并使用new关键字显式地初始化它。这时,str2不会存储在字符串常量池中。

然后,我们调用str2的intern()方法,将其存储在字符串常量池中,并返回在字符串常量池中的引用。最后,我们使用"=="运算符比较字符串对象的引用,来判断它们是不是同一个对象。我们发现str1和str3是同一个对象,而str2是另一个对象。

此外,在Java 7及以后版本中,字符串常量池被放置在堆中,因此intern()方法不仅可以用于字符串常量池,也可以用于字符串池。字符串池是一个位于堆中的区域,用于存储在运行时创建的字符串对象。

总结

Java String intern()方法可以将字符串对象存储在字符串常量池中,并返回该对象在字符串常量池中的引用。如果该对象已经存在于字符串常量池中,那么intern()方法将返回该对象在字符串常量池中的引用。

使用intern()方法可以节省内存,避免创建多个相同的字符串对象,提高性能。但是,使用intern()方法也可能引起内存泄漏和性能问题,因此需要谨慎使用。