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呢?自行考虑

 

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM