美文网首页
改善Java程序建议7

改善Java程序建议7

作者: KUN叔 | 来源:发表于2017-02-23 15:03 被阅读10次

    建议7: 警惕自增的陷阱

    先看代码:

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

    运行结果count等于0。

    首先,count++是一个表达式,是有返回值的,它的返回值就是自加前的值,Java是这样处理的:首先把count的值拷贝到一个临时变量区,然后对count变量加1,最后返回临时变量区的值。详细处理步骤如下:
    步骤1: JVM把count值(其值是0)拷贝到临时变量区。
    步骤2: count值加1,这时候count的值是1。
    步骤3: 返回临时变量区的值,注意这个是0,没有修改过。
    步骤4: 返回值赋值给count,此时count值被重置成0。
    解决办法:只要把“count = count++”修改成“count++”即可。
    但是该问题在不同的语言环境有不同的实现,C++中的“count=count++”与“count++”是一样的,PHP则跟Java处理方式相同。

    相关文章

      网友评论

          本文标题:改善Java程序建议7

          本文链接:https://www.haomeiwen.com/subject/ptlbwttx.html