Java中三元运算符的优先级和赋值
Ternary operator's precedence and assignment in Java
为什么下面的 bar
方法编译失败,而 foo
没问题?
这是因为 Java 的 precedence rules。赋值的先例低于 ?
或 :
,因此最后计算。
这意味着案例 bar
会像这样解析:
return (s != null ? s : s) = "bar";
这对编译器没有意义。
如果您插入我在上面显示的括号,您会看到编译器失败并在同一位置显示相同的错误消息,因为两者实际上是相同的。
为什么下面的 bar
方法编译失败,而 foo
没问题?
这是因为 Java 的 precedence rules。赋值的先例低于 ?
或 :
,因此最后计算。
这意味着案例 bar
会像这样解析:
return (s != null ? s : s) = "bar";
这对编译器没有意义。
如果您插入我在上面显示的括号,您会看到编译器失败并在同一位置显示相同的错误消息,因为两者实际上是相同的。