国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

java中的自增問題介紹

2019-11-26 14:29:10
字體:
來源:轉載
供稿:網友

運行下面這段代碼,其結果是什么呢?

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中的自增問題介紹就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 宝丰县| 张家口市| 循化| 凤冈县| 普兰店市| 汕尾市| 璧山县| 祁连县| 临沂市| 特克斯县| 剑川县| 湖北省| 阳泉市| 上犹县| 那坡县| 红河县| 正安县| 九龙县| 台南县| 桓台县| 修水县| 吉水县| 天峨县| 东阳市| 林州市| 沁阳市| 监利县| 竹北市| 盖州市| 政和县| 治多县| 定远县| 城口县| 乌拉特中旗| 张掖市| 许昌市| 独山县| 沁源县| 长岛县| 大宁县| 郯城县|