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++ 會是什麼結果呢編譯器
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++ 更加高效總結