三元运算符在Java中的优先级和赋值

时间:2016-05-25 12:49:45

标签: java ternary-operator

为什么bar下方的foo方法无法编译,而"select firstName as \"firstName\", lastName as \"lastName\" from Employee" 没问题?

enter image description here

1 个答案:

答案 0 :(得分:3)

这是因为Java的precedence rules。分配的先例低于?:,因此最后会对其进行评估。

这意味着案例bar会被解析如下:

return (s != null ? s : s) = "bar";

对编译器没有意义。

如果插入我在上面显示的括号,您将看到编译器在同一位置失败并显示相同的错误消息,因为两者实际上是相同的。