手机
当前位置:查字典教程网 >编程开发 >Java >java中的自增问题介绍
java中的自增问题介绍
摘要:运行下面这段代码,其结果是什么呢?packagecom.test;publicclassInc{publicstaticvoidmain(S...

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

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中的内部类详细总结

Java字符串详解的实例介绍

java学习:日期的运算代码

java的引用类型的详细介绍

java web项目里ehcache.xml介绍

java中将汉字转换成拼音的实现代码

java1.5中访问环境变量

java IO流文件的读写具体实例

浅谈java中静态方法的重写问题详解

java字符串的合并

精品推荐
分类导航