簡體   English   中英

帶字符串混疊的三元運算符會導致部分內容丟失?

[英]Ternary operator with string concatination causes partial loss of content?

Boolean isValid = true;
String message = "prefix" + isValid != null ? " midfix " : "suffix";
System.out.println(message);

您認為這是什么結果? 我希望prefix midfix 但實際上結果是: midfix

這是Java庫本身(1.7)中的錯誤嗎? 我應該為此報告一個錯誤嗎? 還是按預期工作,而我濫用呢?

可以使用以下方法“修復”:

String message = "prefix" + (isValid != null ? " midfix " : "suffix"); 但是無論如何,如果沒有剎車,那該不行嗎?

評估為:

String message = (("prefix" + isValid) != null) ? " midfix " : "suffix";

等效於:

String message = ("prefixtrue" != null) ? " midfix " : "suffix";

因此,將返回“ midfix”。

如果希望返回“前綴中綴”,請使用括號:

String message = "prefix" + (isValid != null ? " midfix " : "suffix");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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