如下代码,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);
}
}
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);
}
}
我记得这个是等效于
temp = j;
j++;
j = temp;
他是先用j的值在执行++操作的。
但是++操作又优先于=号操作,所以他是先记录j的值到一个临时变量,然后做加加操作,然后再把临时变量的值赋值给j,所以你这样写j会一直不变的。
j=j++;
跟下面的表达式是一样的。
j=0++;
再分
j=0;
0++;
因为基本类型是值,而不是引用,所以j=j++,后面j++的时候并不会改变j=0的值。