源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

java中的自增问题介绍

  • 时间:2022-12-14 22:13 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要: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使用了[b]中间缓存变量机制: [/b]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中的自增问题介绍就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持编程素材网。
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部