【发布时间】:2015-10-04 08:31:53
【问题描述】:
不是我想要的,但我想知道为什么一元运算符不能直接作用于 Java 中的值?
为什么result++; 可以在int result = 0; 工作但result = 0++; 不工作?
我在docs中只能找到一元运算符只需要一个operand,但是对于操作数没有明确的定义,似乎可以是变量也可以是值。
【问题讨论】:
标签: java unary-operator
不是我想要的,但我想知道为什么一元运算符不能直接作用于 Java 中的值?
为什么result++; 可以在int result = 0; 工作但result = 0++; 不工作?
我在docs中只能找到一元运算符只需要一个operand,但是对于操作数没有明确的定义,似乎可以是变量也可以是值。
【问题讨论】:
标签: java unary-operator
并不是一元运算符不起作用 - 例如 -(+(-5)) 就可以了。
但是++ 不只是计算一个值——它的目的是增加一个变量。 0 不是变量。
来自JLS 15.14.2(后缀自增运算符++)
后缀表达式的结果必须是可转换(第 5.1.8 节)为数值类型的类型的变量,否则会发生编译时错误。
请注意,这也不仅仅是文字。你不能这样做:
String x = "foo";
x.length()++; // wrong!
再次因为 x.length() 不属于变量。
但您可以使用其他一元运算符,例如
String x = "foo";
int y = -x.length(); // Unary - operator... that's fine
【讨论】: