如下代码,j最后输出来居然是0,有点想不明白。我知道j++是把0赋值给j然后再自增,但是也有自增啊,怎么会是零呢?我把j=j++;换成j=j;j=j+1;这样结果却是正确的,这两段代码不是一个意思嘛?求解释!
public class PlusPlus{
public static void main(String[] args) {
int j = 0;
for(int i = 0;i<100;i++){
j = j++;
}
System.out.println(j);
}
}

解决方案 »

  1.   

    j++ 本来就是给j从新赋值 你还用j=j++做什么?
      

  2.   

    这种写法是错误的 所以得到的值也肯定不是你想要的  你把循环里里面的i++ 改成i = i++你会有所发现
      

  3.   

    那当然了。你在100次for()的循环里都是执行了j=j++;此时j++的值当然还是0啊。不管是循环100次还是无数次,结果都是这样的。++j返回的才是1
      

  4.   

    j=j++;这句代码的意思不是先把j赋值给j,然后j再自增一次吗?虽然开始的时候把0赋值给j,但是j还是会自增一次啊,还是想不通。
      

  5.   

    j = j++;
    我记得这个是等效于
    temp = j;
    j++;
    j = temp;
    他是先用j的值在执行++操作的。
    但是++操作又优先于=号操作,所以他是先记录j的值到一个临时变量,然后做加加操作,然后再把临时变量的值赋值给j,所以你这样写j会一直不变的。
      

  6.   

    j=0;
    j=j++;
    跟下面的表达式是一样的。
    j=0++;
    再分
    j=0;
    0++;
    因为基本类型是值,而不是引用,所以j=j++,后面j++的时候并不会改变j=0的值。