如下代码(《深入理解Java虚拟机》周志明 p57),还是不理解为什么两个值一个true一个false(jdk 1.7实验)
public static void main(String[] args) {
String str1 = new StringBuilder("你好").append("世界").toString();
System.out.println(str1.intern() == str1);
String str2 = new StringBuilder("ja").append("va").toString();
System.out.println(str2.intern() == str2);
}
2 回答
BIG阳
TA贡献1859条经验 获得超6个赞
不了解intern()是什么。我理解只要有字符串池,那么只要相同的字符串 引用都应该相等才有意议。
所以这种比较应该全部为true才对。
应该都为false才对,不了解java.
C#的到是很清楚,只要是直接字 "Hello"这种都在字符串常量池中,而其它出来的都是新的空间。
添加回答
举报
0/150
提交
取消
