在 Java 中,String.intern() 方法和常量池是密切相关的概念。在不同的 JDK 版本中,它们之间存在一些区别。本文将详细介绍 String.intern() 方法和常量池的概念,并解释不同 JDK 版本中它们的变化。
- 常量池
常量池是 Java 虚拟机(JVM)中的一块特殊区域,用于存储字符串常量和符号引用。它包含了在编译期间生成的所有字符串常量和字面量。常量池有两种形式:运行时常量池和类常量池。
运行时常量池是每个类或接口在运行时都有自己的常量池。它保存类中使用的常量,包括字符串常量和符号引用。类常量池则是在编译期间生成的,它包含类中的常量,用于支持字节码指令。
- String.intern() 方法
String.intern() 方法是 String 类提供的一个实例方法。它的作用是返回一个字符串的规范化表示,即返回常量池中的字符串对象。
当调用 String.intern() 方法时,如果常量池中已经存在该字符串,则返回常量池中的引用;否则,将当前字符串添加到常量池中并返回其引用。这意味着通过 intern() 方法可以将堆中的字符串对象转移到常量池中。
下面是一个示例代码:
String str1 = new