java - Java 中的三元表达式是如何求值的?

标签 java conditional ternary-operator

我已经按照教程提供了 here并排队:

boolean t1 = false?false:true?false:true?false:true;

t1 的最终值为 false。但我评价它是真的。 第一个 false 给出 true,那个 true 给出 false,最后给出 true 我对吗?不,我错了。 请告诉我如何在 Java 中评估三元表达式?

最佳答案

当编译器找到 ? 字符时,它会查找相应的 :?前的表达式是三元条件运算符的第一个操作数,表示条件。

?:之间的表达式是运算符的第二个操作数,如果条件为真则返回其值。

:后面的表达式是运算符的第三个操作数,如果条件为假则返回其值。

boolean t1 = false   ? false    :    true?false:true?false:true;

             first     second        third
             operand   operand       operand

由于第一个操作数为 false,结果是第三个操作数 true?false:true?false:true 的值,所以让我们评估一下:

true    ?   false    : true?false:true;

first       second     third
operand     operand    operand

由于第一个操作数为真,结果为第二个操作数的值 - false

顺便说一句,第三个操作数 true?false:true 的值也是 false,所以 x?false:true?false:true 无论 x 的值如何,都返回 false。

关于java - Java 中的三元表达式是如何求值的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44614401/

相关文章:

java - Intellij 替换所有出现的 stringbuilder.toString()

java - 有没有一种方法可以在 Java 的一个数组元素中包含多行文本?

c# - 使用自定义编译器进行枚举的自定义三元运算符

java - 派生类中的实例变量与父类(super class)的私有(private)实例变量同名吗?

c# - "not >"是否等于 "<="用于 double

regex - MongoDB:使用 $cond 和 $regex 进行聚合

shell - if 语句 shell 脚本中的多个条件

javascript - 具有多个表达式的 JavaScript 中的三元运算符?

css - 如何做一个内联比较条件来应用徽章中的一个类?

java - 警告 : validation was turned on but an org. xml.sax.ErrorHandler