问题来源
在学习Java的String pool和intern()方法时,有以下例子:
String s1 = new String("aaa");
String s2 = new String("aaa");
String s1_ = s1.intern();
String s2_ = s2.intern();
按道理,以上四个变量的地址,s1与s2不同,s1调用intern()方法,将"aaa"字面值加入String Pool中,返回其引用,注意不是s1,而是池子中的新字符串,s2调用intern()方法时,池子中已经有字符串"aaa"了,所以返回已有的"aaa"的引用。
s1_, s2_的地址应该是相同的,其他的地址与它们不同。
问题表现
用“==”判断上述四个变量的地址关系时,输出与预判相同;
但用debug查看时,所有的地址都相同,和预想不一样,why?