情景:昨天在写代码的时候,写了一个这样的代码
这个程序输出的count等于几呢?是count自加10次吗?答案等于10吗?可以非常肯定的告诉你,答案错误!运行结果等于0.
然后我又改成了下面的代码:
这次等于10.java的自增怎么了?为什么不能使用了?
百度了一下
解释:
count++是一个表达式,是有返回值的,它的返回值就是count自加前的值,Java对自加是这样处理的:
首先把count的值(注意是值,不是引用)拷贝到一个临时变量区,然后对count变量+1,最后返回临时变量区的值.
程序第一次循环时的详细处理步骤如下:
步骤1:JVM把count值(其值是0)拷贝到临时变量区
步骤2:count值+1,这时候count值是1
步骤3:返回临时变量区的值,注意这个值是0,没修改过
步骤4:返回值赋值给count,此时count的值被重置成0
于是第一次循环后count的值还是0,其他9次的循环也是这样的,最终你会发现count的值始终没有改变,仍然保持着最初的状态.
怎么解决:
1.可以把自增替换成count=count+1;
2.