最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

一文帶你搞懂Java中i++ 和 ++i的區(qū)別

 更新時間:2023年09月24日 08:57:11   作者:程序員濟癲  
在Java中,i++和++i都用于遞增變量i的值,但它們之間有一個細微的區(qū)別,i++是后綴遞增操作符,++i是前綴遞增操作符,在大多數(shù)情況下,這兩種遞增操作的結(jié)果都是一樣的,但在某些特定的表達式和邏輯中,它們可能會產(chǎn)生不同的效果,本文將帶大家搞清Java中i++ 和 ++i的區(qū)別

正文

1、i++ 和 ++i 有什么區(qū)別

首先,先看兩個小例子:

到這里先停一下,大家自己思考半分鐘,覺得打印結(jié)果是什么。

然后,我們來看看結(jié)果。

沒錯,第一個打印是 6 和 5,第二個打印是 6 和 6。

這就是他們的區(qū)別,解釋下原因:

i++:這是后綴遞增運算符,先將當前值賦給變量,然后再遞增。

++i:這是前綴遞增運算符,先遞增變量的值,然后再賦給變量。

2、i++ 和 ++i 誰的效率高

這個問題我其實蒙對了,我說是一樣高的,但是主管問我原因,我沒答上來。

后來告訴我了答案,就是它們被編譯器和JVM優(yōu)化后的字節(jié)碼是相同的,所以效率一樣高。

3、字節(jié)碼指令

然后我就去找了字節(jié)碼指令的用法,將上面的案例以及兩者效率是否一樣進行了驗證。

指令用法很簡單,定位到class文件所在目錄,使用 javap -verbose 命令執(zhí)行即可。

1)、從字節(jié)碼看區(qū)別

我們將前面那個案例,通過字節(jié)碼指令輸出到txt文件中。

在文檔編輯器中找到main方法,對這兩個字節(jié)碼內(nèi)容進行比對,發(fā)現(xiàn)確實有如下不同。

可以看到紅框部分,剛好佐證了上面解釋的區(qū)別,i++會先使用當前值,然后再遞增;而++i會在遞增之后立即使用新值,通過字節(jié)碼看起來還是挺明顯的。

2)、從字節(jié)碼看誰的效率高

我們依然寫個for循環(huán)的小例子來做驗證。

將這兩個類編譯后的class通過字節(jié)碼指令輸出到txt中

接下來我們就可以比對下結(jié)果了

可以看到,main方法開始,從上到下的字節(jié)碼是完全一樣的,沒任何不同。

所以,i++ 和 ++i 的效率本質(zhì)是一樣高的。

總結(jié)

以上就是一文帶你搞懂Java中i++ 和 ++i的區(qū)別的詳細內(nèi)容,更多關(guān)于Java i++ 和 ++i的區(qū)別的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評論

随州市| 遵化市| 绥滨县| 桂东县| 安乡县| 乌鲁木齐市| 蒲城县| 肥东县| 焦作市| 宁陕县| 涟水县| 顺平县| 怀宁县| 泗洪县| 雷山县| 洛南县| 祁阳县| 洛扎县| 酒泉市| 林西县| 广安市| 永春县| 泗洪县| 扶余县| 洞头县| 乌苏市| 赣榆县| 祁门县| 田东县| 建瓯市| 肇庆市| 永川市| 东源县| 岑巩县| 长汀县| 华安县| 澄江县| 瓦房店市| 峨眉山市| 巴楚县| 寿光市|