变量赋值:int x = x = 1

时间:2015-06-11 13:47:22

标签: java

这是Java编译器允许的,它在做什么?

int x = x = 1;

我意识到x被分配给x,但它怎么能有两个= s?

3 个答案:

答案 0 :(得分:7)

x = 1都将值1分配给x并且'返回'1,它允许这样的事情:

definition = when is true ? this : else this;

答案 1 :(得分:3)

从右到左阅读赋值语句:

根据Assignment Operators

  

有12个赋值运算符;一切都是语法上的   右联想(他们从右到左分组)。因此,a = b = c表示   a =(b = c),它将c的值赋给b,然后赋值   b到a。

所以,

int x = x = 1; 

相同
x = (x = 1); 

然后

x = 1; x = x;

答案 2 :(得分:1)

int xx放入堆栈。

右手部分x = 1将1分配给x。但这是一个值为1的表达式

最后重新分配给x