簡體   English   中英

java字符串連接奇怪的行為

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM