您的位置:首页 > 编程语言 > Java开发

java中的 i++ 和++i

2016-06-12 00:00 295 查看
摘要: 记得老师说过一句特别深刻的一句话:”++在后是先赋值后加1,++在后是先加1后赋值“,但是遇到了一个下面的代码,我怀疑是不是理解错了

记得老师说过一句特别深刻的一句话:”++在后是先赋值后加1,++在后是先加1后赋值“,但是遇到了一个下面的代码,我怀疑是不是理解错了:

public class Client{
public static void main(String[] args){
int count =0;
for(int i=0 ;i<10 ; i++){
count=count++;
}
System.out.println("count="+count);
}

}

这个程序输出的count等于几?是count自加10次吗?答案等于10?可以非常肯定的告诉你,答案错误!运行结果是count等于0.这是为什么呢?
count++ 是表达式,是有返回值的,它的返回值是count自加前的值,java对自加是这样处理的:首先把count的值(注意是值,不是引用)拷贝到一个临时变量区,然后对count 变量加1,最后返回临时变量区的值。程序运行的详细步骤:
这里是列表文本

步骤1:JVM 把count 值(其值为0)拷贝到临时变量区。

步骤2:count值加1,这时候count的值是1。

步骤3:返回临时变量区的值,注意这个值是0,没修该过的。

步骤4:返回值赋值给count,此时count值被重置成0.

count =count ++ 可以换成这样的程序理解

public static int mockAdd (int count){
//先保存初始值
int temp=count;
//做自增操作
count=count+1;
//返回原始值
return temp;
}

于是第一次循环后count的值还是0,其他9次循环也是一样,最终你会发现count的值始终没有变化,始终保存着最初的状态!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java i++ ++i