String concatenation does not work properly in Java when concatenating 2 results of ternary operators

我是研究僧i 提交于 2019-11-30 23:29:26

It's interpreted as following code:

String x = str != null ? "A" : ("B" + str == null ? "C" : "D");

"B" + str is not null so it will be evaluated as "D"

With help of OSborn's answer you can do what you expect with this code:

String x = (str != null ? "A" : "B") + (str == null ? "C" : "D");

and since you are just comparing str with null and both conditional statements are almost the same, it can be shortened like this:

 String x = (str != null ? "AD" : "BC");

The problem is probably the order of operations. You can make it explicit by writing:

String x = (str != null ? "A" : "B") + (str == null ? "C" : "D");

"B" + str == null ? "C", String concatenation evaliated first before the conditional expression evaluated

I think you intended

String x = (str != null ? "A" : "B") + (str == null ? "C" : "D");
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!