[英]java string concat strange behavior
我遇到了奇怪的字符串連接行為,請幫助我理解這種行為。
String s3 = "ABC";
String s5 = new String(s3);
System.out.println("s5 == s3 "+ s5 == s3); // output: false
System.out.println("s5 == s3 "+ (s5 == s3)); // output: s5 == s3 false
應該先打印s5 == s3 false而不是false ?
這是您的第一個表達式的修改版本,它打印false
:
System.out.println(("s5 == s3 " + s5) == s3); // "s5 == s3 ABC" == "ABC"
==
優先級低於+
,因此先進行連接,然后進行比較。
要使其產生預期的輸出,您需要覆蓋此運算符優先級,就像您在第二個sysout
所做的那樣,它將比較的結果連接到字符串。
因此 Java 或任何語言都具有運算符優先級,這意味着某些操作先於其他操作發生。 在第一行中,“==”的優先級低於“+”,后者發生得更早,所以輸出是“==”操作的結果,它是假的
在此處查看有關運算符優先級的更多信息: https : //docs.oracle.com/javase/tutorial/java/nutsandbolts/operators.html
s5 == s3 檢查引用是否相同。
created 中的 s3 是字符串池,s5 是新對象,而不是指 s3。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.