问题:
在 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中文网其他相关文章!