public static void main(String[] args) {
String a = new StringBuilder("Jav").toString();
a.intern();
String c = "Jav";
System.out.println(a == c); //false
}
public static void main(String[] args) {
String a = new StringBuilder("Ja").append("v").toString();
a.intern();
String c = "Jav";
System.out.println(a == c); //true
}
我不明白为什么第一个打印的是假的,而第二个打印的是真的.我认为这应该是真的,因为在调用intern方法后,a的引用将被写入字符串池,而c将指向a的引用.有人能解释一下区别吗?谢谢!
我的JDK版本:OpenJDK 17.0.7
顺便说一句,我在使用StringBuffer时也得到了同样的结果.