介绍
正常使用i++100%的程序员都会做,但是i=i++呢??
示例
public class IPlusePluse {
public static void main(String[] args) {
int i=0;
i=i++;
System.out.println("i="+i);
}
}
输出结果:
i=0
遇到这种情况程序员也很无奈,不知道怎么下手!!因为这都是概念性的问题!!
那么i++的执行过程到底是怎么样的呢??
正确计算过程:我们首先会知道i的初始值为0,然后i作自增计算变成了1。根据i++的意思,"先用后加"
,所以我们这里就会返回0作为结果,i虽然经过自增后变成了1,但是经过赋值就变成了0;所以这里有个关键点:i=i++
其中i++
总是一个表达式,而如果要想完成赋值,我们就得把i++
表达式先完全计算出来才行!!最终才会完成赋值!!!
由于计算机无法和人一样把数据映射到脑海里,所以JVM在运算i++
过程中就会创建中间变量,这个变量是外界不可见的!!
所以在i++
这个过程中,会创建一个中间变量,该中间变量存储0,而i会自增加1变成1。因为i++
的规则是"先用后加"
所以会把中间变量的值赋值给前面的i,最终输出结果为0;
i++和++i都是这么分析的,这里笔者就不再赘述!!