可能重複:
Java - Order of Operations - Using Two Assignment Operators in a Single Line在Java技術鏈賦值給變量
如果我們分配一個變量類似下面的鏈中的價值,
int x=10, y=15;
int z=x=y;
System.out.println(x+" : "+y+" : "+z);
那麼所有三個變量的值x
,y
和z
變成15
。我不明白以下現象與數組。
int array[]={10, 20, 30, 40, 50};
int i = 4;
array[i] = i = 0;
System.out.println(array[0]+" : "+array[1]+" : "+array[2]+" : "+array[3]+" : "+array[4]);
它輸出10 : 20 : 30 : 40 : 0
。它將array[4]
中的最後一個元素的值替換爲0
。
關於以前的轉讓聲明 - int z=x=y;
,我預計第一個元素的值意味着array[0]
將被替換爲0
。爲什麼不是這樣?這很簡單,但我無法弄清楚。你能解釋一下嗎?
順便說一句,這個賦值語句array[i] = i = 0;
是假的,它有沒有自己的價值在這段代碼,不應再使用,但我只是想知道事情如何實際工作在這種情況下。
見http://stackoverflow.com/questions/9440844/java-order-of-operations-using-two-assignment-operators-in - 單行 – Mikhail
我認爲'array [i]'在編譯時本身被評估爲'array [4]'(可能是由Compiler完成的一些優化)。 –