關於java中的i++和++i

li_lianhua發表於2019-03-12

最近在看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


相關文章