生活点滴:java基础知识细化
生活点滴:java基础知识细化
一、前言
越是对一门语言深入了解,就会发现自己不知道的东西越多,这才是走向了正道,同样的,对于java语言特性的学习,笔者也只是初窥门径。
二、java基础知识思考
i=i++
首先我们来看一下“i=i++”这个语句的执行原理。
首先我们编译运行一下:
可以看到执行的结果为0,为什么呢,我们反编译A.class。
我们可以看到编号为2,3,6的三段汇编代码,其中2代表着将i的值读入一个变量之中,3表示将读到的i值自增,6代表将存入临时变量中的值重新写入i中,因此之后打印出来的还是i本身。
这个过程可以表示如下:
temp=i; i++; i=temp;
因此在java中,使用i=i++并不能达到自增的目的,反而是原地踏步,而在C语言中可能会有不同的结果,这与编译器最终的解释执行有关。