程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> java中的自增成績引見

java中的自增成績引見

編輯:關於JAVA

java中的自增成績引見。本站提示廣大學習愛好者:(java中的自增成績引見)文章只能為提供參考,不一定能成為您想要的結果。以下是java中的自增成績引見正文


運轉上面這段代碼,其成果是甚麼呢?

package com.test;

public class Inc {
  
  public static void main(String[] args) {
    Inc inc = new Inc();
    int i = 0;
    inc.fermin(i);
    i = i++;
    System.out.println(i);
  }

  void fermin(int i) {
    i++;
  }
}

成果是:0

上述相似代碼在C/C++中運轉成果是:1,這是為何呢?
 

這是由於Java應用了中央緩存變量機制:
i=i++;同等於:
temp=i; (等號左邊的i)
i=i+1;      (等號左邊的i)
i=temp;   (等號右邊的i)
而i=++i;則同等於:
i=i+1;
temp=i;
i=temp;


詳解:

jvm外面有兩個存儲區,一個是暫存區(是一個客棧,以下稱為客棧),另外一個是變量區。

jvm會如許運轉這條語句:

步調1   jvm把i的值(其值是0)拷貝莅臨時變量區(temp=0)。

步調2 變量區i的值加1,這時候i的值是1。

步調3 前往暫時變量區(temp)的值,留意這個值是0,沒修正過。

步調4 前往值賦值給變量區的i,此時i的值被重置成0。


 c/c++中沒有別的設置一個暫時變量或是暫時空間來保留i,一切操作都是在一個內存空間中完成的,所以在c/c++中是1。

以上這篇java中的自增成績引見就是小編分享給年夜家的全體內容了,願望能給年夜家一個參考,也願望年夜家多多支撐。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved