关于Java的i++和++i的区别

之前对于 i++ 和 ++i 的理解就是:

int i=1,a=0;
1、i++ 先运算在赋值,例如 a=i++,先运算a=i,后运算i=i+1,所以结果是a==1
2、++i 先赋值在运算,例如 a=++i,先运算i=i+1,后运算a=i,所以结果是a==2

 

直到今天遇到下面类似这道题:

public class Test3 {
    public static void main(String[] args) {    
        int y=0;    
        int i =0;
        y=++y;
        y=++y;
y=++y; System.out.println(
"y="+y); i=i++; i=i++;      i=i++; System.out.println("i="+i); } }

 

结果:

y=3;
i=0;

解释:

/*
i++,是先赋值,后加一,++i是先加一后赋值,三个y=++y,是y在内存自增一,然后进寄存器,最后赋值的时候i赋值就是1,第二个就是2,第三个就是3!
而三个i=i++, 是赋值之后再自增1,i=0这个值先进寄存器,然后i在内存自增1,最后赋值的时候寄存器出来的0值会冲掉1值成为最终结果,所以无论多少个结果都会是0。
*/

 

posted @ 2019-03-15 22:59  心灵蚂蚁  阅读(1099)  评论(0编辑  收藏  举报