2015-06-11 135 views
2

这是由Java编译器允许的,什么是它做什么?变量赋值:INT X = X = 1

int x = x = 1; 

我意识到,x被分配给X,但它怎么能有两个= S'

+0

你编译它?比你知道答案的第一个问题不问我们 – moffeltje

+0

Eclipse中说,X被设置为x。 –

回答

7

X = 1这两个值1分配给x和也 '返回' 1,它允许这样的事情:

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

P.S.在Java中,诸如此类的事情被认为是在大多数情况下,一个代码味道 - 它有时OK唯一一次(取决于你要向谁倾诉)类似于上面的例子 – Karrde

1

int x提出x堆栈上。

右手部分x = 1分配1至x。但是这是一个表达式,其值为1.

最后,将这个值重新分配给x

3
从右

读赋值语句左:

Acording到Assignment Operators

有12个赋值运算符;所有在语法上 右结合(他们组从右到左)。因此,A = B = c表示 A =(B = C),其分配C到B的值,然后将该值说明B 分配给。

所以,

int x = x = 1; 

相同

x = (x = 1); 

然后

x = 1; x = x; 
相关问题