首页 > Java > java教程 > 什么时候应该使用 Java 的 String `intern()` 方法?

什么时候应该使用 Java 的 String `intern()` 方法?

Barbara Streisand
发布: 2024-12-04 03:26:13
原创
154 人浏览过

When Should You Use Java's String `intern()` Method?

字符串文字和 intern 方法

问题:

在 Java 中,什么情况下需要使用 intern( ) 字符串方法文字?

答案:

Java 自动实习字符串文字,这意味着它们的值存储在常量池中并被多个字符串对象引用。但是,当处理使用 new 运算符创建的字符串时,intern() 方法非常有用。

说明:

字符串文字(例如“Rakesh”)会自动生成实习过。这意味着 new String("Rakesh") 返回的字符串引用将始终指向与文字“Rakesh”相同的对象。

但是,使用 new 创建的字符串不会被保留。代码 String s4 = new String("Rakesh") 在内存中创建一个新对象,即使“Rakesh”的值已经存在于常量池中。为了强制这个新创建的字符串被实习,我们可以使用 intern() 方法,如 String s5 = new String("Rakesh").intern().

因此, intern() 方法当我们想要手动确保多个字符串对象引用常量池中的同一个对象时应该使用,即使它们是使用创建的新。

示例:

考虑以下代码:

String s1 = "Rakesh";
String s2 = "Rakesh";
String s3 = "Rakesh".intern();
String s4 = new String("Rakesh");
String s5 = new String("Rakesh").intern();

if (s1 == s2) {
    System.out.println("s1 and s2 are same"); // 1.
}

if (s1 == s3) {
    System.out.println("s1 and s3 are same"); // 2.
}

if (s1 == s4) {
    System.out.println("s1 and s4 are same"); // 3.
}

if (s1 == s5) {
    System.out.println("s1 and s5 are same"); // 4.
}
登录后复制

输出将为:

s1 and s2 are same
s1 and s3 are same
s1 and s5 are same
登录后复制

第 1、2 和 4 行说明 s1、s2、s3 和s5都引用常量池中的同一个对象。第 3 行表明 s4 是内存中的不同对象,尽管其值与 s1 相同。

以上是什么时候应该使用 Java 的 String `intern()` 方法?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板