尊敬的Java大师们!
请您解释一下,为什么在 Java 中连接 2 个三元运算符的结果时,字符串连接不能正常工作?
Example:
String str = null;
String x = str != null ? "A" : "B" + str == null ? "C" : "D";
System.out.println(x);
输出是“D”,但我期望“BC”。
我怀疑它是这样工作的,因为操作员的优先级,但我不确定,我们到底是如何得到上述情况的“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
with null
两个条件语句几乎相同,可以这样缩短:
String x = (str != null ? "AD" : "BC");
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)