關於Java的i++和++i的區別

以前對於 i++ 和 ++i 的理解就是:spa

int i=1,a=0; 一、i++ 先運算在賦值,例如 a=i++,先運算a=i,後運算i=i+1,因此結果是a==1
二、++i 先賦值在運算,例如 a=++i,先運算i=i+1,後運算a=i,因此結果是a==2

 

直到今天遇到下面相似這道題:code

public class Test3 { public static void main(String[] args) { int y=0; int i =0; y=++y; y=++y;
y=++y; System.out.println(
"y="+y); i=i++; i=i++;      i=i++; System.out.println("i="+i); } }

 

結果:blog

y=3; i=0;

解釋:內存

/* i++,是先賦值,後加一,++i是先加一後賦值,三個y=++y,是y在內存自增一,而後進寄存器,最後賦值的時候i賦值就是1,第二個就是2,第三個就是3!
而三個i=i++, 是賦值以後再自增1,i=0這個值先進寄存器,而後i在內存自增1,最後賦值的時候寄存器出來的0值會沖掉1值成爲最終結果,因此不管多少個結果都會是0。
*/
相關文章
相關標籤/搜索