string.intern()是干嘛的
时间: 2024-08-16 19:00:21 浏览: 56
Test24StringInConstantsPool.java.zip
`String.intern()` 是 Java 中 String 类的一个静态方法,用于优化字符串的内存管理。当你创建两个完全相同的字符串时(除了它们在堆上的位置不同),Java 的垃圾收集器并不会自动消除这种冗余,因为它们在语法上被认为是不同的引用。这就是所谓的"复制-on-write"(每次修改都会复制整个字符串到新位置)的行为。
`intern()` 方法的作用就是将某个字符串对象标记为“共享”,如果当前 JVM 内存中已经有另一个字符串与之完全匹配(即内容和哈希码都相等),那么这个方法不会创建新的字符串实例,而是返回已经存在的那个实例,这样可以节省内存并减少哈希冲突。这意味着,如果你多次对同一个字符串使用 `intern()`,最终只会有一个副本存在于 JVM 中。
例如:
```java
String str1 = new String("Hello");
String str2 = "Hello";
str2 = str2.intern(); // 此时 str1 和 str2 指向的是同一个内存区域
System.out.println(str1 == str2); // 输出 true
```
阅读全文