2017-10-20 50 views
-2

last = cur = cur == null ? head : cur.link;java中增強問號的使用

我想了解使用if和else語句的情況。 但我被困在這一個。 誰能幫助這一點

+0

肯定。你卡在哪裏? –

+1

標題可能應該是「濫用三元運算符專長。同時分配」。 – Kayaman

+0

是的,這是一個真正濫用的聲明。 –

回答

5

你表達等於

if (cur == null) { 
    cur = head; 
} else { 
    cur = cur.link; 
} 
last = cur; 

可以將例如分成兩個部分更容易理解。 第1部分

last = cur = xxx; 

相同

cur = xxx; 
last = cur; 

第2部分

cur = cur == null ? head : cur.link; 

相同

if (cur == null) { 
    cur = head; 
} else { 
    cur = cur.link; 
} 

第2部分會更容易理解如果cur沒有出現三次。因此,這是簡單的:

a = b == null ? c : d; 

相同

if (b == null) { 
    a = c; 
} else { 
    a = d; 
} 
+1

'last = cur = xxx;'只與'last = xxx; cur = xxx;'如果'xxx'沒有任何副作用並且每次評估的結果都是相同的(這不是'last = cur = cur + 1'或'last = cur = myList.add(1) '例如)。它總是和'cur = xxx一樣; last = cur;',您在重寫示例單線程時使用了它。 – Raniz

+1

@Raniz,我站好了。謝謝。我現在更新了答案。 – Stefan