⑴ java 中 i++和++i有什麼區別
i++
和
++i
都是表達式,都會有一個返回值。
不同的地方在於,i++返回的是加一之前的值,而++i是返回加1後的值。
int
i
=
1;
int
b
=
i++;
此時執行後i為2,b為1.
int
i=1;
int
b=++i;
執行後i為2,b為2.
傳言++i比i++速度更快
⑵ Java裡面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 可以。
左值是對應內存中有確定存儲地址的對象的表達式的值,而右值是所有不是左值的表達式的值。一般來說,左值是可以放到賦值符號左邊的變數。
但能否被賦值不是區分左值與右值的依據。比如,C++的const左值是不可賦值的;而作為臨時對象的右值可能允許被賦值。左值與右值的根本區別在於是否允許取地址&運算符獲得對應的內存地址。
⑶ Java 中 i-- 和 --i 的實際應用
你這兩段代碼執行結果沒有任何區別,--i和i--的區別我寫個例子你看一下估計就明白了:
inti=10,a,b;
System.out.println("i="+i);
a=i--;
System.out.println("執行a=i--;//i="+i+",a="+a);
b=--i;
System.out.println("執行b=--i;//i="+i+",b="+b);
結果如下:
i=10
執行a=i--;//i=9,a=10
執行b=--i;//i=8,b=8
⑷ java中++i和i++的區別
無論在java還是在其他語言中,++i和i++的用法都是一樣的,主要差別體現在直接使用中:
++i是先對i進行自增操作然後再進行運算,如
inti=10;
System.out.println(++i);//這時輸出結果為11
i++是先進行運算然後再進行自增操作,如
inti=10;
System.out.println(i++);//這時輸出的結果還是為10
當然在不是直接進行運算的用法當中輸出的結果是一樣的,如:
inti=10;
i++;
System.out.println(i);//結果為11
i=10;
++i;
System.out.println(i);//結果為11
⑸ Java中的++ i和 i++ 的區別
java中的++ i和 i++ 和c語言中是一樣的
首先你要明確以一點是不管是 ++i 還是 i++,最後結果對於i來說都是一樣的,他的值都會加1。
eg:i=5;這兩個動作完成後i的值都變成6。
其次 對於他賦值給的那個變數就不一樣了。
eg:i=5;
a = ++i,這句執行完後a = 6,當然i=6;
但是
a = i++,這句執行完後a = 5,i=6;
看了上面的例子應該明白結果了吧。
理解的話對於a = ++i你可以理解先執行+,再賦值。而對於a = i++,是先執行賦值再+。