我们何时可以在 Java 中使用 String 类的 intern() 方法?
javaobject oriented programmingprogramming更新于 2025/5/22 16:12:17
在 Java 中,可以使用 String 类 的 intern() 方法 来处理 字符串重复问题。使用 intern() 可以节省大量由 重复字符串实例 消耗的内存。如果一个字符串包含与另一个字符串相同的内容,但它可以占用不同的内存位置,则该字符串是重复的。
我们知道,JVM 为字符串文字维护一个 单独的堆内存 以提高性能。一旦我们声明一个字符串文字,它就会进入这个池,如果另一个变量被分配了相同的文字值,它将从池中挑选出来而不是创建一个新对象并将其存储在堆中。但是如果使用 new 构造函数 声明字符串,即使池中存在文字,也会创建一个新对象。为了避免这种情况并强制 JVM 从池中选择文字,我们使用 intern() 方法。
Java 默认自动驻留所有字符串。intern() 方法可以在带有 new String() 的字符串中使用,以便通过 == 运算符进行比较。
示例
public class StringInternClassTest {
public static void main(String[] args) {
String s1 = "Tutorix";
String s2 = "Tutorix";
String s3 = new String("Tutorix");
final String s4 = s3.intern();
String s5 = "?Tutorix".substring(1);
String s6 = s5.intern();
System.out.println(s1 == s2);
System.out.println(s2 == s3);
System.out.println(s3 == s4);
System.out.println(s1 == s3);
System.out.println(s1 == s4);
System.out.println(s1 == s5);
System.out.println(s1 == s6);
System.out.println(s1.equals(s2));
System.out.println(s2.equals(s3));
System.out.println(s3.equals(s4));
System.out.println(s1.equals(s4));
System.out.println(s1.equals(s3));
}
}
输出
true false false false true false true true true true true true
相关文章
有用资源
java 参考教程 - 该教程包含有关 java 的更多信息:https://www.cainiaomax.com/java/
打印
下一节:我们可以在 Java 中将 public static void main() 的顺序更改为 static public void main() 吗? ❯❮ 上一节:如何在 Java 中使用 java.lang.String 类的 substring() 方法?

