2015-10-04 25 views
1

不是我想要的,但我想知道为什么一元运算符不直接使用Java中的值?为什么Unary Operators不能直接在Java的值上运行?

为什么result++;工作如果int result = 0;result = 0++;不工作?

我在docs中可以找到的一点是,一元运算符只需要一个operand,但操作数没有明确的定义,它似乎可以是变量或值。

回答

8

这不是一元运算符不工作 - 例如 - (+( - 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 
相关问题