String.intern()方法解惑

2017-11-26  本文已影响0人  泰迪的bagwell

在日常编码中,String.intern()不算是一个常用的方法,但是很多同学在面试的时候都会碰到这个问题(鄙视一下这些面试官),这里我们基于内存来详细分析一下这个方法。
String.intern()是一个Native方法,它的作用是:如果字符串常量池中已经包含一个等于此String对象的字符串,则返回代表池中这个字符串的String对象;否则,将此String对象包含的字符串添加到常量池中,并且返回此String对象的引用。先上代码:

String str1 = new StringBuilder("i'm").append(" T").toString();
System.out.println(str1.intern()==str1);

String str2 = new StringBuilder("ja").append("va").toString();
System.out.println(str2.intern()==str2);

这段代码在JDK1.6中运行,会得到两个false,而在JDK1.7和1.8中运行会得到一个ture和一个false。这个差异的原因是:

上一篇 下一篇

猜你喜欢

热点阅读