1
不是我想要的,但我想知道为什么一元运算符不直接使用Java中的值?为什么Unary Operators不能直接在Java的值上运行?
为什么result++;
工作如果int result = 0;
但result = 0++;
不工作?
我在docs
中可以找到的一点是,一元运算符只需要一个operand
,但操作数没有明确的定义,它似乎可以是变量或值。
不是我想要的,但我想知道为什么一元运算符不直接使用Java中的值?为什么Unary Operators不能直接在Java的值上运行?
为什么result++;
工作如果int result = 0;
但result = 0++;
不工作?
我在docs
中可以找到的一点是,一元运算符只需要一个operand
,但操作数没有明确的定义,它似乎可以是变量或值。
这不是一元运算符不工作 - 例如 - (+( - 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