尊敬的 Java 大师们!
请你解释一下,为什么在连接三元运算符的 2 个结果时,字符串连接在 Java 中不能正常工作?
例子:
String str = null;
String x = str != null ? "A" : "B" + str == null ? "C" : "D";
System.out.println(x);
输出是“D”,但我期望是“BC”。
我怀疑它是这样工作的,因为运算符(operator)的优先级,但我不确定,对于上述情况,我们究竟是如何得到“D”的。这种情况采用什么计算算法?
最佳答案
解释为如下代码:
String x = str != null ? "A" : ("B" + str == null ? "C" : "D");
"B"+ str
不为空,因此它将被评估为 "D"
借助 OSborn 的回答,您可以使用此代码执行您期望的操作:
String x = (str != null ? "A" : "B") + (str == null ? "C" : "D");
并且由于您只是将 str
与 null
进行比较,并且两个条件语句几乎相同,因此可以这样缩短:
String x = (str != null ? "AD" : "BC");
关于java - 连接三元运算符的 2 个结果时,字符串连接在 Java 中无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22117029/