不是我想要,但我想知道为什么一元运算符不直接作用于 Java 中的值?
为什么 result++;
在 int result = 0;
时有效,但 result = 0++;
无效?
我在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 - 为什么一元运算符不能直接对 Java 中的值进行操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32931558/