2011-12-15 56 views
5

請考慮Java中的以下代碼片段。我知道以下代碼片段中的temp[index] = index = 0;陳述幾乎是不可接受的,但在某些情況下它可能是必需的,因此需要知道。Java中的鏈接陣列分配

package arraypkg; 

final public class Main 
{ 
    public static void main(String... args) 
    { 
     int[]temp=new int[]{4,3,2,1}; 
     int index = 1; 

     temp[index] = index = 0; 
     System.out.println("temp[0] = "+temp[0]); 
     System.out.println("temp[1] = "+temp[1]); 
    } 
} 

它在控制檯上顯示以下輸出。

temp[0] = 4 
temp[1] = 0 

我不明白這種說法temp[index] = index = 0;temp[1]如何包含0?這項任務如何發生?

+0

你認爲`temp [1]`是什麼? – 2011-12-15 19:08:58

+0

我想這很清楚,他期望'index'首先變成'0',使'temp [index]等於'temp [0]`,這樣只有第一個元素被修改。 – 2011-12-15 19:12:16

回答

8

分配完成(temp[index] = (index = 0)),右聯合。

但首先表達式temp[index]針對LHS變量進行評估。那時index仍然是1.然後RHS(index = 0)完成。

1

您的陳述將零分配給它。語句temp [index] = index = 0將0寫入索引AND到temp [index]中。這就是這個意思。使所有變量位於賦值運算符0的左邊。

1

該行的作用是在index被賦予值0之後temp[index]應該等於index

這就是爲什麼這種語法大多不可接受的原因。這很難閱讀,大多數人不理解它。

1

您將temp [1]和index分配給'0' 它從左到右運行。 think ass temp [index/* * /]