1.x++和++x的区别
对于java中x++和++x的区别,很多书上都只说明了:
x++是先运算后自加1
++x是先自加1后运算
例1:
int x=10;
int y = x++;
System.out.println("y="+y);
System.out.println("x="+x);
输出的结果为:
y=10
x=11
例2:
int x=10;
int y = ++x;
System.out.println("y="+y);
System.out.println("x="+x);
输出的结果为:
y=11
x=11
这两个例子都比较好理解,y=x++是先执行赋值y=x操作后执行x=x+1,y=++x是先执行x=x+1后进行y=x。
2.新的理解
例3:
int x=10;
int y = x++ + x;
System.out.println("y="+y);
System.out.println("x="+x);
输出结果:
y=21
x=11
按照之前的理解,x++属于先运算后自加。那么 “y=x++ + x”应该被理解为"y=10+10",然后x=x+1。结果应该是 y=20,为什么会输出y=21?
我个人总结的原因在于,先运算后自加中的“运算”是针对操作数而言的。
对于例1,赋值运算符左边只有一个操作数,这个操作数赋值完成后,运算就结束了,之后再进行x=x+1。所以y=10,x=11;
对于例3,加号为双目运算符,且执行顺序为从左往右。第一个操作数结果是10,到这一步运算结束,x自加1,此时x的值已经为11,于是第二个操作数x的值为11,执行结果是y=10+11=21;
例4:
int x=10;
int y = x++ + x + ++x;
System.out.println("y="+y);
System.out.println("x="+x);
根据前面的经验,运算结束针对是操作数,那么赋值右边有三个操作数,分别是10+11+12,最终y=33。
输出结果:
y=33
x=12
以上是java小白自学途中的一些个人理解,如有错误希望各位大佬指正。