別再說你不懂Java的i =i++了!

首先,我們先來看一段程序

  		int a = 0;
        int b = 0;
        a = a++;
        b =a++;
        System.out.println(a);
        System.out.println(b);

請大家先想想答案

答案是0 1
首先,我們先來了解一下i++和++i的區別:

	1. i = i++是先返回值,再進行運算
	2. i = ++i 是先運算,再返回值
	
	第二點相信很多人可以理解,第一點的執行過程大概如下:
	
			i=i++;等同於:
			temp=i; (等號右邊的i)
			i=i+1;      (等號右邊的i)
			i=temp;   (等號左邊的i)

所以該題執行過程如下:

	前置條件:a = 0 ;
	執行a = a++;
    temp = 0; 
    a = a+1; 	//此時a是1
    a = temp; 	//a變成0了
     
    所以最後a還是0
	前置條件:b = 0; a =0;
	執行b = a++;
	temp = a;
	a = a+1;
	b = temp;
	
	所以b爲0,但是這個時候a經過a=a+1,已經變成1了.
	前面也有這個過程,a在那時確實爲1,
	但是接下去的a = temp 導致a變成了0.
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章