JAVA i=i++;

来源:百度知道 编辑:UC知道 时间:2024/05/25 02:24:29
public static void main(String[] args){
int i = 0;
i = i ++;
System.out.println("i = " + i);
}

我想问的是为什么输出的结果是
i = 0

就算是先执行“i = i”,可是i 的自加不还是要执行的吗?

因为i = i ++; 的执行顺序是

1.将=右边int i = 0的值赋给左边的i--->i = 0

2.右边的i执行自加,但并没有把1值赋给左边的i(也就是说实际中虽然i的值为1,但并没有赋给内存中的i

所以System.out.println("i = " + i); 中的i的值并没有改变大小
3.如果你将i = i ++; 改成i = ++i; 就是1

你打印输出的是I这个变量的引用
i = i++是你声明的表达式
并没有执行
如果你在下面添句 i++;
你看看效果,就是你要的了。

i=i++是先把i的值赋给i.然后才把i自加1。
你再下面再添加个变量,再把i的值赋一遍,就可以看到自加后的结果了。

++i 是i先加上1 后再赋值
++i是先传递值(即:i=0),再加1

因为i = i++;是先将i的值(0)存入堆栈,然后对变量区中的i自加1,这时i的值的确是1,但是随后的istore_1又将堆栈的值(0)弹出赋给变量区的i,所以最后i = 0。

不执行,你已经将i的值付给了i。就不会再执行。相当于你给了自己一个苹果,再加加还有有吗?如果你改成 int j = i++。就可以了