为什么一元运算符不能直接对 Java 中的值进行运算?
Why can't Unary Operators operate directly on values in Java?
不是我想要的,但我想知道为什么一元运算符不直接作用于 Java 中的值?
如果 int result = 0;
但 result = 0++;
不起作用,为什么 result++;
起作用?
我在docs
中只能找到一元运算符只需要一个operand
,但是操作数没有明确的定义,好像可以是变量或一个值。
并不是说一元运算符不起作用 - 例如 -(+(-5)) 就可以。
但是 ++
不只是计算一个值 - 它的目的是增加一个变量。 0 不是变量。
来自JLS 15.14.2(后缀自增运算符++)
The result of the postfix expression must be a variable of a type that is convertible (§5.1.8) to a numeric type, or a compile-time error occurs.
请注意,这也不只是关于文字。你不能这样做:
String x = "foo";
x.length()++; // wrong!
同样,x.length()
未归类为变量。
但是您可以使用其他一元运算符,例如
String x = "foo";
int y = -x.length(); // Unary - operator... that's fine
不是我想要的,但我想知道为什么一元运算符不直接作用于 Java 中的值?
如果 int result = 0;
但 result = 0++;
不起作用,为什么 result++;
起作用?
我在docs
中只能找到一元运算符只需要一个operand
,但是操作数没有明确的定义,好像可以是变量或一个值。
并不是说一元运算符不起作用 - 例如 -(+(-5)) 就可以。
但是 ++
不只是计算一个值 - 它的目的是增加一个变量。 0 不是变量。
来自JLS 15.14.2(后缀自增运算符++)
The result of the postfix expression must be a variable of a type that is convertible (§5.1.8) to a numeric type, or a compile-time error occurs.
请注意,这也不只是关于文字。你不能这样做:
String x = "foo";
x.length()++; // wrong!
同样,x.length()
未归类为变量。
但是您可以使用其他一元运算符,例如
String x = "foo";
int y = -x.length(); // Unary - operator... that's fine