Java的运算符 先后问题

for (int i = 0,m=0; i <10; i++) {

         m=m++;

        System.out.println(m);
    }

为什么输出的m一直等于0, 最主要是想知道 在这个代码中 m=m++;是怎么运行。一般来说

先把m赋值给m 然后 m在自增,这种情况下 输出的应该是1,2,3.。。。。。 但是实际上

输出的却一直是0 各位求解

因为它是先把m赋值给m,然后m再加1,而每次循环时m都赋值为0,所以m一直等于0。你想输出123...可以试试改成m=++m;

你看看m++和++m的区别就知道了,m++运行后这一行代码m的值是不变的,就是说每次m = m++;本来m下一行要变成m+1但是你又重新赋值,又将m赋值成0

m = 0;
关于m = m++计算过程:
第一步:把m值存在栈顶,即0;
第二步:计算m++,m = m+1,即1;
第三步:把栈顶值赋给m,即0;
m = m++这样写m永远不会变,