为什么一元运算符不能直接对 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