++x和x++有什么区别?
首先,两个操作都是自增操作,都只能对变量进行该操作,但是两种自增有些许区别
资料拓展
关于两者区别的举例:
(1)
int x=1;
System.out.println(x++); //输出1, x++先在当前表达式中使用x的值,然后再将x的值自增1
System.out.println(x); //输出2,经过上一条指令x自增了1
(2)
int x=1;
System.out.println(++x); //输出2, ++x 先将x的值自增1,然后再在当前表达式中使用x的值
System.out.println(x); //输出2,经过上一条指令x自增了1
关于两者的步骤:
x++实际上分为三个步骤
取值,计算,赋值
例如x=1,x++,
实际上JVM定义了一个缓存值y
步骤① y=x;取值(只运算一次)
步骤② y=y+1;计算
步骤③ x=y;赋值
-------------
而++x,步骤不一样,
① y=x;取值(只运算一次)
② x=y;赋值
③y=y+1;计算
>>手机不能换行,慕课网的工程师好渣渣>>>>>>
这就是书上说的x++是先计算后赋值 ++x是先赋值后计算
++X是先自增再取值
这种写法的效率和X=X+1 ; X+=1; 相比是最高效的,直接取X的内存地址 然后自增。效率最低的是X=X+1 需要先取右侧X的地址,然后+1 再去左侧X地址,将右值传递给左值(编译器不知道两个X是同一个X)