最近在看java核心思想,突然想到了一些很基礎的問題,比如i++和++i,思考之下發現居然連這個問題也是一知半解,於是乎,看了些資料和自己的理解,寫出來以備將來回顧。
首先,定義式的解釋為:
i++:先賦值在運算
++i:先運算在賦值
但是還不夠具體,嘗試寫了程式碼:
int i = 0;
int a = 1;
int b = 2;
b = i++;
a = ++i;
System.out.println("a==" + a);
System.out.println("b==" + b);複製程式碼
輸出的結果為:
a==2 b==0
那麼嘗試分析了一下,在b=i++時,過程是這樣的:
- 先把i的值賦給b,此時i==0,所以結果是b==0;
- 然後執行++操作給i加1,所以此時i==1;
在a=++i時過程是這樣的:
- 先執行++i操作,給i加1,此時i==2;
- 再把i的值賦給a,所以a==2;
所以,其實就是這麼簡單。
又把程式碼做了些調整,加深了印象:
int i = 0;
int a = 1;
int b = 2;
a = ++i;
b = i++;
System.out.println("a==" + a);
System.out.println("b==" + b);
System.out.println("i==" + i);複製程式碼
輸入的結果為:
a==1 b==1 i==2