在java中++i和i++的區別

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。

小結:++i和i++有很大的區別,用的時候一定要分析清楚用哪個,越長得像的,越是陷阱。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章