欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

正文

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

首先,先看兩個小例子:

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

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

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

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

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

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

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

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

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

3、字節(jié)碼指令

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

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

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

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

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

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

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

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

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

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

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

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

總結(jié)

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

相關(guān)文章

  • win7 64位系統(tǒng)JDK安裝配置環(huán)境變量教程

    win7 64位系統(tǒng)JDK安裝配置環(huán)境變量教程

    這篇文章主要為大家詳細(xì)介紹了win7 64位系統(tǒng)JDK安裝配置環(huán)境變量教程,感興趣的小伙伴們可以參考一下
    2016-06-06
  • Java 數(shù)組交集的實現(xiàn)代碼

    Java 數(shù)組交集的實現(xiàn)代碼

    這篇文章主要介紹了Java 數(shù)組交集的實現(xiàn)代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • Java向上轉(zhuǎn)型和向下轉(zhuǎn)型的區(qū)別說明

    Java向上轉(zhuǎn)型和向下轉(zhuǎn)型的區(qū)別說明

    這篇文章主要介紹了Java向上轉(zhuǎn)型和向下轉(zhuǎn)型的區(qū)別說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • springboot使用redis的詳細(xì)步驟

    springboot使用redis的詳細(xì)步驟

    SpringBoot對常用的數(shù)據(jù)庫支持外,對NoSQL?數(shù)據(jù)庫也進(jìn)行了封裝自動化,下面這篇文章主要給大家介紹了關(guān)于springboot使用redis的詳細(xì)步驟,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-06-06
  • 關(guān)于Gateway路由匹配規(guī)則解讀

    關(guān)于Gateway路由匹配規(guī)則解讀

    本文詳細(xì)介紹了SpringCloudGateway的路由匹配規(guī)則,包括基本概念、常用屬性、實際應(yīng)用以及注意事項,路由匹配規(guī)則決定了請求如何被轉(zhuǎn)發(fā)到目標(biāo)服務(wù),是Gateway的核心功能之一,在配置路由時需要注意順序、性能和安全性
    2025-02-02
  • Spring Boot 工程的創(chuàng)建和運行(圖文)

    Spring Boot 工程的創(chuàng)建和運行(圖文)

    這篇文章主要介紹了Spring Boot 工程的創(chuàng)建和運行(圖文),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-02-02
  • Java自定義注解實現(xiàn)Redis自動緩存的方法

    Java自定義注解實現(xiàn)Redis自動緩存的方法

    本篇文章主要介紹了Java自定義注解實現(xiàn)Redis自動緩存的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下。
    2017-04-04
  • Java位掩碼控制權(quán)限與(&)或(|)非(~)、>的介紹

    Java位掩碼控制權(quán)限與(&)或(|)非(~)、>的介紹

    今天小編就為大家分享一篇關(guān)于Java位掩碼控制權(quán)限與(&)或(|)非(~)、>的介紹,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-03-03
  • Java springboot探究配置文件優(yōu)先級

    Java springboot探究配置文件優(yōu)先級

    在springboot項目中,我們可以通過在yml文件中設(shè)置變量,再通過@Value注解來獲得這個變量并使用,但如果這個項目已經(jīng)部署到服務(wù)器上,我們想更改這個數(shù)據(jù)了需要怎么做呢,其實在springboot項目中,配置文件是有優(yōu)先級的
    2023-04-04
  • SpringMVC接收與響應(yīng)json數(shù)據(jù)的幾種方式

    SpringMVC接收與響應(yīng)json數(shù)據(jù)的幾種方式

    這篇文章主要給大家介紹了關(guān)于SpringMVC接收與響應(yīng)json數(shù)據(jù)的幾種方式,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者使用springmvc具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03

最新評論