Java 中的後置自增運算子
問題:
問題:public class Test { public static void main(String[] args) { int j = 0; for (int i = 0; i < 100; i++) { j = j++; } System.out.println(j); // prints 0 } }在下面的在程式碼片段中,為什麼後置自增運算子j 是否將0 賦給j?
temp = j; j = j + 1; j = temp;根據《Java Puzzlers》一書的作者,語句j = j 類似於以下序列:
然而,語句a = b 為b 賦值1,這與後置增量運算子的預期行為相矛盾。
答案:temp = b; b = b + 1; // increment a = temp; // assign以下錯誤爭論在於應用增量規則,然後分配給 a = b 但不分配給 j = j 。 a = b 的正確運算順序是:
j = j; j = j + 1; // increment將相同的規則應用到j = j ,我們得到:由於j 的初始值為0,後自增運算子回傳0,因為表達式中使用了自增前的j 值。 因此,j 的最終值為 0,因為賦值語句的計算結果為 j = 0。
以上是為什麼Java中j = j給j賦值0?的詳細內容。更多資訊請關注PHP中文網其他相關文章!