1 ++i与i++的区别
在使用的时候,大家都了解的是++i是先加再用,而i++是先用再加。但是二者其实有很大区别的。
2 .代码测试
如下代码:
/**
*
*/
package chapter2;
/**
* @author Vayne
*
*/
public class ProandPost {
public static void main(String[] args) {
int i = 15;
function1(i);
function2(i);
function3(i);
}
/**
* @param i
*/
private static void function3(int i) {
// TODO Auto-generated method stub
i = i++;
System.out.println("i=i++的结果是:" + i);
}
/**
* @param i
*/
private static void function2(int i) {
// TODO Auto-generated method stub
int j = 0;
j = i++;
System.out.println("j=i++的结果是:" + j);
}
/**
* @param i
*/
private static void function1(int i) {
// TODO Auto-generated method stub
i = ++i;
System.out.println("i=++i的结果是:" + i);
}
}
运行结果如下:
i=++i的结果是:16
j=i++的结果是:15
i=i++的结果是:15
3 .区别小议
对于后置++,即i++,其实其实际应用过程是:
int temp=i;
i+=1;
f(temp);
其中f指的是对temp的实际应用。因此,在i++使用的过程中,引入了第三个变量temp,因此,对于i=i++,是将temp的值赋给了i,所以i=i++的结果,i为15。
而对于前置++,即++i,直接将i+=1,然后直接应用i。
4 .进一步的探索
从伪指令角度来说,前置++是将变量+1后应用,而后置++是先将变量的值压入栈中,然后将变量+1,最后应用的是栈中的值。