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