先看一段代码
public class String_{
public static void main(String[] args) {
String a = "abcd";
String b = new String("abcd");
System.out.println(a==b.intern());
System.out.println(b==b.intern());
}
}
答案见最后。
分析:
- 若是字符串常量池中不存在这个字符串,就创建一个引用,把该字符串实例对象的引用复制过来,并返回该地址。
- 若是字符串常量池中已存在该字符串,就直接返回该字符串的地址。
- == 对于引用类型的数据比较的是地址是否相等。
则这里b.intern( ) 方法返回的是常量池对应字符串的地址,即下图的0x22。
所以答案为:
true
false