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