【发布时间】:2012-07-18 11:30:59
【问题描述】:
在 Java 中,如果我在常规 if 中使用三元 if 运算符,例如:
if ((x > y - z) ? true : callLongWaitedMethod(many, parameteres)) {
loveTeddyBear();
}
如果x > y - z 确实为真,它会执行 callLongWaitedMethod 吗?我希望不是这样,我可以使用这个漂亮的语句,乍一看有点复杂,但与额外的布尔变量相比更有吸引力:
boolean b = (x > y - z) ? true : callLongWaitedMethod(many, parameteres);
if (b) {
loveTeddyBear();
}
特别是如果我在一个反复迭代的大循环中使用它,所以从性能的角度来看,每次创建布尔值都不会很好,而如果我在循环之外声明布尔值,我可能会错过整洁因为循环很大。
【问题讨论】:
-
只是一种风格注释——但是对这种行为进行编码只会让下一个人更难弄清楚发生了什么。要么简化以使其易于阅读,要么在此处发表评论以说明意图。
-
您在这里所做的只是重新发明条件或运算符。
-
简而言之 -
NO,并且总是接吻(保持简单和愚蠢)。 -
@SophieSperner : 我知道它是三元的
-
苏菲,不是或;它是条件或。阅读 Java 语言规范中的所有内容。
标签: java if-statement ternary-operator