public class StringDemo {
public static void main(String[] args) {
String str1="Hello";
String str3=str1;
System.out.println("str1==str3"+":"+str1==str3);
}
}
為什麼是輸出是false 最好用內存圖解解釋下,謝謝了 內存知識不太懂,
你是直接定義的字符串常量,本質上str1和str3是指向同一個常量池的。你的代碼之所以輸出false是因為你真正執行的是字符串"str1==str3:hello"和str3進行等操作
優先執行前面的字符串加操作,後執行後面的==操作了。
修正測試代碼:
boolean flag = str1==str3;
System.out.println("str1==str3:"+flag);
或者修正如下(加一括號提高優先級)
System.out.println("str1==str3"+":"+(str1==str3));