亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

java中i = i++和i =++i的深入講解

 更新時間:2021年02月01日 16:28:39   作者:最底層的程序員  
這篇文章主要介紹了java中i = i++和i =++i的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
public class Count {
 public static void main(String[] args) {
 int i = 0;
 i = i++ ;
 System.out.println(i);
 }
}

上面代碼輸出的i為0,如果是把i = i++換成i=++i,又會輸出1,這是由于i++是先賦值,再計算導致,但是為什么先賦值呢?

public static void main(String[] args) {
 int i = 0;
 i++ ;
 }

 public static void main(java.lang.String[]);
 Code:
 0: iconst_0 將int型0推送至棧頂(找到0)
 1: istore_1 將棧頂int型數(shù)值存入第二個本地變量(變量就是i)
 2: iinc  將指定int型變量增加指定值(如i++, i--, i+=2等)
 5: return


上圖是i++的字節(jié)碼,++i的和i++的一摸一樣,0和1就是最基礎的給i賦值為0,iinc就是把i自增。

但是如果加上一個i=i++呢?

// i = i++;
 public static void main(java.lang.String[]);
 Code:
 0: iconst_0 將int型0推送至棧頂
 1: istore_1 將棧頂int型數(shù)值存入第二個本地變量
 2: iload_1 將第二個int型本地變量推送至棧頂
 3: iinc  將指定int型變量增加指定值(如i++, i--, i+=2等)
 6: istore_1 將棧頂int型數(shù)值存入第二個本地變量
 7: return

0和1依舊是給i賦值為0,2是把當前i的值推送到棧頂,然后iinc對局部變量表的i進行自增,6是把棧頂?shù)臄?shù)值賦給i,注意,2的時候推送到棧頂?shù)氖?,所以又變回0了。

// i = ++i
 public static void main(java.lang.String[]);
 Code:
 0: iconst_0 將int型0推送至棧頂
 1: istore_1 將棧頂int型數(shù)值存入第二個本地變量
 2: iinc  將指定int型變量增加指定值(如i++, i--, i+=2等)
 5: iload_1 將第二個int型本地變量推送至棧頂
 6: istore_1 將棧頂int型數(shù)值存入第二個本地變量
 7: return

i = ++i的時候,iinc往前提了一步,說明,在i的值被壓到棧頂前,先進行了自增,所以棧頂?shù)闹凳?,此時再賦值給局部變量表的里i,就是自增過的。

總結:iinc操作是直接針對局部變量表的,不經(jīng)過操作棧,i++所謂的先賦值,從字節(jié)碼層面來看,就是i在進行自增前,先把原來的值存到了操作數(shù)棧,所以如果執(zhí)行b = i++,b之所以等于是i原來的值,就是由于操作數(shù)棧的值是自增前的值,而++i的,自增操作提前了,所以b=++i后,b的值和i的值一樣。

總結

到此這篇關于java中i = i++和i =++i的文章就介紹到這了,更多相關java中i = i++和i =++i內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 微信小程序微信登錄的實現(xiàn)方法詳解(JAVA后臺)

    微信小程序微信登錄的實現(xiàn)方法詳解(JAVA后臺)

    通常我們在登錄微信小程序的時候都是通過授權登錄,下面這篇文章主要給大家介紹了關于微信小程序微信登錄的實現(xiàn)方法,文中通過實例代碼介紹的介紹的非常詳細,需要的朋友可以參考下
    2022-07-07
  • 全面探究 Java 內部類

    全面探究 Java 內部類

    說起內部類這個詞,想必很多人都不陌生,但是又會覺得不熟悉。原因是平時編寫代碼時可能用到的場景不多,用得最多的是在有事件監(jiān)聽的情況下,并且即使用到也很少去總結內部類的用法。今天我們就來一探究竟
    2021-09-09
  • Spring?Cloud?Alibaba使用Nacos作為注冊中心和配置中心

    Spring?Cloud?Alibaba使用Nacos作為注冊中心和配置中心

    這篇文章主要為大家介紹了Spring?Cloud?Alibaba使用Nacos作為注冊中心和配置中心的示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-06-06
  • Java實現(xiàn)導出pdf格式文件的示例代碼

    Java實現(xiàn)導出pdf格式文件的示例代碼

    這篇文章主要為大家詳細介紹了Java實現(xiàn)導出pdf格式文件的相關知識,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2024-02-02
  • 關于為何說JAVA中要慎重使用繼承詳解

    關于為何說JAVA中要慎重使用繼承詳解

    Java繼承是面向對象的最顯著的一個特征,然而下面這篇文章主要給大家介紹了關于為何說JAVA中要慎重使用繼承的相關資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考借鑒,下面隨著小編來一起學習學習吧
    2018-08-08
  • java實現(xiàn)死鎖的示例代碼

    java實現(xiàn)死鎖的示例代碼

    本篇文章主要介紹了java實現(xiàn)死鎖的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-01-01
  • springboot實現(xiàn)添加郵件發(fā)送及壓縮功能

    springboot實現(xiàn)添加郵件發(fā)送及壓縮功能

    這篇文章主要介紹了springboot實現(xiàn)添加郵件發(fā)送及壓縮功能 ,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-07-07
  • 一篇文章搞定Struts2的類型轉換

    一篇文章搞定Struts2的類型轉換

    這篇文章主要介紹了關于Struts2類型轉換的相關資料,文中主要介紹了Struts2的類型轉換器和自定義類型轉換器的實現(xiàn),有需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-02-02
  • SpringBoot接收前端參數(shù)的幾種常用方式

    SpringBoot接收前端參數(shù)的幾種常用方式

    在Spring Boot開發(fā)中接收參數(shù)是非常常見且重要的一部分,依賴于請求的不同場景,Spring Boot提供了多種方式來處理和接收參數(shù),這篇文章主要給大家介紹了關于SpringBoot接收前端參數(shù)的幾種常用方式,需要的朋友可以參考下
    2024-07-07
  • Java使用線程池批量處理數(shù)據(jù)操作具體流程

    Java使用線程池批量處理數(shù)據(jù)操作具體流程

    這篇文章主要給大家介紹了關于Java使用線程池批量處理數(shù)據(jù)操作的相關資料,Java多線程編程中線程池是一個非常重要的概念,線程池可以提高線程的復用率和任務調度的效率,尤其是當需要查詢大批量數(shù)據(jù)時,需要的朋友可以參考下
    2023-06-06

最新評論