字符串连接的三元运算符会导致部分内容丢失?

时间:2015-03-23 09:26:23

标签: java

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"); 但是如果没有支架,反正不应该有效吗?

1 个答案:

答案 0 :(得分:9)

评估为:

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

相当于:

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

因此" midfix"归还。

如果你愿意"前缀midfix"要返回使用括号:

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