jdk8下的intern()方法
public final class String {
/**返回字符串对象的规范表示形式
* 字符串常量池初始为空,被String类私有地维护。
* 如果当intern方法调用时,池中早已经有了与方法中的String对象相等(equals)的字符串值,那么返回池中的字符串。
* 否则,这个String对象加入到池中,并且返回该String对象的引用
* /
public native String intern();
}
具体可以参考
https://tech.meituan.com/2014/03/06/in-depth-understanding-string-intern.html
不过,有个疑问:
在《深入理解Java虚拟机》的书中是这样写的:
在JDK1.6中,intern方法会把首次遇到的字符串实例复制到永久代,返回的也是永久带中这个字符串实例的引用。
这和上面的那篇博客的关于jdk6的图解有点不一致。