奇怪的java行为

时间:2011-12-07 11:57:00

标签: java behavior

任何人都可以解释我这个

int i=2;
int j=+-i;//-+i; 

j=-2+-i-+i的值。

这在Java中很好吗?或者这应该是编译器错误?

提前谢谢。

4 个答案:

答案 0 :(得分:11)

没关系 - 你刚刚有两个一元操作员在一起。所以它是:

int j = +(-i);

int j = -(+i);

请参阅这两个运营商的JLS的sections 15.15.315.15.4

答案 1 :(得分:2)

这绝对没问题。浏览java中的Unary Operators

两种情况都相似,最终结果与以不同顺序执行的相同操作保持相同!!

答案 2 :(得分:2)

只需按照这种方式考虑:int j = +i将对应int j = i。因此,-+i+-i将为-i

答案 3 :(得分:2)

您将两个一元运算符应用于i

int j = +-i;

相当于

int j = +(-i);

,同样适用于-+i。结果与否定i相同,除非i等于Integer.MIN_VALUE(在这种情况下j最终等于i)。