讓我們考慮java運算符優先級y = x +(x = 10);
int x=1;
int y1 = (x=10) + x;
System.out.println(y1);
// prints 20
x = 1;
int y2 = x + (x=10);
System.out.println(y2);
// prints 11
在第一個例子,()首先被執行,因爲它具有最高的優先級;設置x
值至10,因此右側操作數(X)獲得的新值10等y1 = 10+10 = 20
在第二個例子中,左邊的操作數的「x」獲取其值1,則()被執行並且x得到它的新值10,所以y2 = 1+10 = 11;
爲什麼在第二個例子中,()沒有被首先執行;所以(x = 10)首先被執行,左邊的操作數x應該被設置爲它的新值10,因此y2 = 20;但它沒有發生這種情況?
不要混淆優先順序和操作數的評估順序。 –