日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 默认站点!

默认站点

當前位置: 首頁 >

你知道i=i++;的含义吗?原理其实没有你想的那么简单

發布時間:2023/12/3 30 豆豆
默认站点 收集整理的這篇文章主要介紹了 你知道i=i++;的含义吗?原理其实没有你想的那么简单 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

i++和++i我們都知道,但是你知道i=i++;嗎?

自上學時,老師就說i++是先賦值再加,而++i是先加再賦值,比如我們寫個代碼舉下例子:

i++:

/*** 自增案例*/public?static?void?testZiZeng(){int?i = 1;int?a = i++;System.out.println("a="+a);System.out.println("i="+i);}

其運行結果是:

a=1 i=2

++i:

public?static?void?testZiZeng(){int?i = 1;int?a = ++i;System.out.println("a="+a);System.out.println("i="+i);}

其運行結果為:

a=2 i=2

運行結果解釋:

i的值沒的說,不管是++i還是i++,都是在原來值的基礎上自身加1,這個很好理解,不好理解的是a的值:

  • 第一個案例中,a = i++;相當于是這樣的,a = i,i++,那么a的值自然就是1了。

  • 第二個案例,a = ++i,相當于i先++(此時i從1變成了2),然后在將i的值賦值個a,那么a自然而然也就成2了。

這一部分理解了,我們接著看下一個i=i++;

某天,給學生們寫了一段代碼:

public?static?void?testZiZeng(){int?count = 0;for(int?i = 0;i<10;i++){count = count++;}System.out.println("count="+count);}

代碼寫完之后,問:“誰知道count的值是多少?”

王同學和劉同學在簡單計算之后爭相往起站:“老師,是10”,其他人也附和“沒錯,是10”,“對,就是10”……大家都陸陸續續的說出了自己心中的正確答案。

“小點聲,你們說的是錯的!別這么大聲……”看著大家這么積極的回答,我不忍心的勸說道。

于是大家都用驚愕的眼神看著我,眼神里仿佛寫著,十萬個為什么。

其實正確答案是:

(點擊空白處查看答案)

count=0

接下來我們分析一下為什么?

點點下面的小卡片就是對我莫大的支持,謝過啦~

count++是一個表達式,是有返回值的,它的返回值就是count自加前的值,Java對自加是這樣處理的:首先把count的值(注意是值,不是引用)拷貝到一個臨時變量區,然后對count變量加1,最后返回臨時變量區的值。

用代碼解釋為這樣的:

int?temp = count; //先把i變量的值10保存到臨時變量中 count = count+1; // i變量的值加1操作 count = temp; //再把臨時變量中的值賦值給i

程序第一次循環時的詳細處理步驟如下:

  • ?JVM把count值(其值是0)拷貝到臨時變量區。

  • ?count值加1,這時候count的值是1。

  • 返回臨時變量區的值,注意這個值是0,沒修改過。

  • 返回值賦值給count,此時count值被重置成0。

知道為什么了吧!

老師,我沒有學過事務……同學你過來,你看老師手里拿的是什么?

2020-06-11

sql server高級查詢,看這篇文章就夠了

2020-06-09

Linux基礎知識之【簡介與安裝】

2020-06-08

教你2分鐘永久激活win10系統手慢無……

2020-06-03

3分鐘內看完這,bootstraptable表格控件,受益匪淺!

2020-06-02

覺得好看,點擊這里

總結

以上是默认站点為你收集整理的你知道i=i++;的含义吗?原理其实没有你想的那么简单的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得默认站点網站內容還不錯,歡迎將默认站点推薦給好友。