【发布时间】:2014-04-02 17:54:16
【问题描述】:
尊敬的 Java 大师!
请您解释一下,为什么在连接三元运算符的 2 个结果时,字符串连接在 Java 中不能正常工作?
例子:
String str = null;
String x = str != null ? "A" : "B" + str == null ? "C" : "D";
System.out.println(x);
输出是“D”,但我期望的是“BC”。
我怀疑由于操作员的优先级,它会像这样工作,但我不确定我们如何在上述情况下得到“D”。这种情况采用什么计算算法?
【问题讨论】:
-
优先级不是你所期望的。如有疑问,请添加括号。
-
我觉得这是三元组降低可读性的情况。
-
是的,我同意。我目前正在指导适当的issue in Checkstyle sandbox。在这个问题中,我们希望让其他人通过使用 Checkstyle 来防止在他们的代码中出现这种不可读的基于三元的表达式
-
事实上,像这样的代码给三元组带来了不好的名声,让人们想出像“永远不要使用三元运算符”这样的过于宽泛的规则。
-
为什么从来没有?我认为最好让人们决定每个表达式可以允许多少三元数
标签: java operator-keyword ternary