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

 

 

转载于:https://www.cnblogs.com/stitchWyq/p/6514481.html

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值