生活点滴: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语言中可能会有不同的结果,这与编译器最终的解释执行有关。

原文地址:https://www.cnblogs.com/zyrblog/p/10886192.html