Java 变量赋值:int x=x=1

Java 变量赋值:int x=x=1,java,Java,这是Java编译器允许的,它在做什么 int x = x = 1; 我知道x被分配给x,但是它怎么能有两个=s?x=1既将值1分配给x,又“返回”1,它允许这样的事情: while ((line = reader.readLine()) != null) int x将x放在堆栈上 右侧零件x=1将1分配给x。但这是一个值为1的表达式 最后,它被重新分配给x从右到左读取分配语句: 根据 有12名指派操作员;所有这些都是语法上的 右关联(它们从右向左分组)。因此,a=b=c意味着 a=(b=c)

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

int x = x = 1;

我知道x被分配给x,但是它怎么能有两个
=
s?

x=1既将值1分配给x,又“返回”1,它允许这样的事情:

while ((line = reader.readLine()) != null)

int x
x
放在堆栈上

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


最后,它被重新分配给
x

从右到左读取分配语句:

根据

有12名指派操作员;所有这些都是语法上的 右关联(它们从右向左分组)。因此,a=b=c意味着 a=(b=c),它将c的值赋给b,然后再赋给 从b到a

所以

x = (x = 1); 
然后


你编译了吗?在没有询问usEclipse的情况下,您知道第一个问题的答案是x被设置为x.P.S。在java中,这种情况在大多数情况下都被认为是代码气味——有时唯一正常的情况(取决于您与谁交谈)类似于上面的示例
x = (x = 1); 
x = 1; x = x;