gpt4 book ai didi

java中的自增问题介绍

转载 作者:qq735679552 更新时间:2022-09-29 22:32:09 25 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章java中的自增问题介绍由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

运行下面这段代码,其结果是什么呢?

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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中的自增问题介绍就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我.

最后此篇关于java中的自增问题介绍的文章就讲到这里了,如果你想了解更多关于java中的自增问题介绍的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com