java i++ 和 ++i 深度解析

i++ 和 ++i 都能實現+1, 順序不一樣

public class TestPlus {

    public static void main(String[] args) {
        int i = 0;
        System.out.println(i++);

        int j = 0;
        System.out.println(++j);

        System.out.println("i=" + i + " j=" + j);

    }
}

輸出結果爲緩存

0
1
i=1 j=1

如上所示:spa

i++ 是執行完後面的語句, 才加1翻譯

++i 就先加1, 才執行後面的語句code

i++利用了中間緩存變量

若是 i = i++ 會是什麼結果呢編譯器

public class TestPlus {

    public static void main(String[] args) {
        int i = 0;
        i = i++;
        System.out.println(i);

        int j = 0;
        j = ++j;
        System.out.println(j);

    }
}

輸出爲編譯

0
1

i++ 有中間緩存變量, i = i++ 等價於class

temp = i;
i = i + 1;
i = temp;

因此 i 不變, 依然是0變量

//Warning: The assignment to variable j has no effect
//百度翻譯:賦值給變量j沒有效果。
j = ++j;
j = ++j 至關於 j = j = j + 1

因此編譯器警告, 語句的賦值沒有做用百度

總結

++i 沒有中間緩存變量, 理論上比 i++ 更加高效總結

相關文章
相關標籤/搜索