i++和++i命令的區別有:
1、賦值順序不同
++ i 是先加後賦值;i ++ 是先賦值後加;++i和i++都是分兩步完成的。
因爲++i 是後面一步才賦值的,所以它能夠當作一個變量進行級聯賦值,++i = a =b,即 ++i 是一個左值;i++ 的後面一步是自增,不是左值。
形象的理解可以是i++先做別的事,再自己加1,++i先自己加1,再做別的事情。
2、效率不同
比如i=3,b=i++就是說b=3,完成之後讓i變成4,b=++i就是先讓i++變成4,然後b=4,其中++i比i++效率要高些。一般來說在循環域裏面,這兩者並沒有什麼很大的區別,但是要注意其生存週期,以及i值在程序流中的變化。
3、 i++ 不能作爲左值,而++i 可以。
左值是對應內存中有確定存儲地址的對象的表達式的值,而右值是所有不是左值的表達式的值。一般來說,左值是可以放到賦值符號左邊的變量。
下面的分析 :
public class Test{
public static void main(String[] args){
int a=10;
int m=7+a++;// m=7+a a=a+1
System.out.println(a);//11
System.out.println(m);//17
}
}
i++或者++i參與到運算中的時候,有個特定的規律:
i++ : 先運算,後加1
++i : 先加1,後運算
所以上面的題,int m=7+a++;
計算過程:(1)先計算 m=7+a (2)再計算: a=a+1
所以最後結果 a=11 m=17。