首頁  >  文章  >  Java  >  為什麼Java中j = j給j賦值0?

為什麼Java中j = j給j賦值0?

DDD
DDD原創
2024-10-27 03:26:29542瀏覽

Why does j = j   assign 0 to j in Java?

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn