一般概念:i++先赋值后计算,++i先运算后赋值。
java不同于c++,c++是在语句运行完后再执行++操作。
int j = i++;
在c++中可以表示为 int j= i; i=i+1;
但在java中,表示形式为 int temp = i ; i = i+1; j=temp;
区别就是java 右++是在赋值之前完成的。 左++同理。
所以java对本身++再次赋值给本身,或者++后的对象再次参与运算,就你妈蛋疼了。
int i; i = i++; 按照运算顺序先运算右边的 i++;等同于temp(将要返回的结果) = i; i=i+1; 最后将结果赋予左边 i = temp。所以运算后 i 还是为0。
i = ++i; 先运行右边的 i=i+1;temp = i; 最后将结果赋予左边i = temp。所以运算后为1。
i = i++ + ++i + ++i;
按顺序来,先运算右边第一个。i++表示为temp1 = i(0),i(1)=i+1 。 然后运算第二个 ++i,i(2)=i(1)+1;temp2 = i(2) ; 最后运行第三个 ++i,i(3)=i(2)+1, temp =i(3)。 对i进行赋值, i(5) = temp1(0) +temp2(2)+temp3(3);