如下代碼(《深入理解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條經(jīng)驗 獲得超6個贊
不了解intern()是什么。我理解只要有字符串池,那么只要相同的字符串 引用都應該相等才有意議。
所以這種比較應該全部為true才對。
應該都為false才對,不了解java.
C#的到是很清楚,只要是直接字 "Hello"這種都在字符串常量池中,而其它出來的都是新的空間。
添加回答
舉報
0/150
提交
取消