java中i++(或i–)和++i(或–i)的区别
学习java过程中踩过这样一个坑,就是*“++”*放在变量前后的区别问题,今天就跟大家讨论一下,它们在表达式中参与运算时到底有何区别呢?
首先来看一下下面这段代码:
public class Test {
public static void main(String[] args) {
int i = 1, j = ++i+ ++i + i--;
System.out.println(i);
System.out.println(j);
}
}
i和j输出结果分别是多少呢,不知道大家是否能一眼就看出来。正确答案是***2***和***8。***
来说说它们的原理,大家都知道不管是++i还是i++,结果都是i的值自增1,那区别就在于自增行为在参与运算时执行先后的问题。i++是原值先参与运算,运算完之后自身的值再加1;而++i是先自加1然后再参与运算。
下面来分析一下这段代码的执行流程:
首先知道了i的初始值是1,然后直接看=号右边的代码
++i 先自加后参与运算,所以此时i的值是2
同理后面的++i是在2的基础上自加1就是3
最后一个表达式i–,因为是先运算后自减,所以参与运算时的值还是3,运算完自减为2
所以最后输出到控制台上的i值为2,j的值为2 + 3 +3就是8了
总结:i++是先参与运算然后自加1,++i是先自加1然后参与运算。i–和--i也同理