java吧 关注:1,269,526贴子:12,774,507
  • 2回复贴,共1

对String类的intern有个疑问求解答

只看楼主收藏回复

String s1 = new StringBuilder("go")
.append("od").toString();
System.out.println(s1.intern() == s1);
String s2 = new StringBuilder("ja")
.append("va").toString();
System.out.println(s2.intern() == s2);
在看面试题看到的。我理解的是s1和s2是toString方法new出来的对象的引用,intern返回的是常量引用,应该两个不相等。但是运行结果是第一个true第二个false.


1楼2018-05-30 12:27回复
    s1.intern(),常量池中没有giod,所有把s1的地址放入常量池中,也就是常量池中的good指向的是s1的地址。Java是特殊的字符串,一开始常量池中就有Java这个这个常量了


    来自Android客户端2楼2018-05-30 12:35
    收起回复