java中“++"的坑之(sum = sum++)问题

在学习编程语言中,++问题看似不复杂,但有时候也会带我们入坑,我们看下面程序

public class Demo1 {

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

}

对于明白++使用的来说,sum1=sum2++先将sum2的值赋值给sum1,然后自身加1;经过10次循环后,很快得到结果为:sum1=9

程序运行后完全没有问题

重点来啦

public class Demo2 {

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

}

先看一下运行结果

不知道有没有那么一点点懵逼?这就是++带来的坑

拿第一次循环来说,sum1=0,对于sum1 = sum1++整个式子来说,是将sum1++整个表达式的值赋给sum1,因为后++是先操作在自加,所以其实整个sum++的值其实是0

总的来说,整个sum1=sum1++整体的操作顺序如下:

1.计算sum1++的值,为0;

2.sum1自加,sum1=1;

3.将sum1++的值赋给sum1,为0;

说到这里,不知道有没有从这个坑里走出来呢??

当然,如果是sum1=++sum1呢?自行考虑

 

 

posted @ 2017-03-07 14:12  Stitch_wyq  阅读(3525)  评论(0编辑  收藏  举报