zoukankan      html  css  js  c++  java
  • java中i=i++的问题

    java中 i = i++ 的结果

      昨天看到下面这段代码,分享出来给大家看看,大家也可以讨论讨论。

      int i = 0;
      i = i++;
      System.out.println("i的值是 "+i);

       根据我们通常所知道的后自增先使用后增加的道理,i++在使用后i自身会增加一个数值,初始值为0时,自增后就是1,

    那么输出的结果应该是1.但实际上这题的结果却是0。

      这是因为jvm在处理i = i++时, 会建立一个临时变量来接收i++的的值,然后返回这个临时变量的值,返回的值再被等号

    左边的变量接收了,这样就是说i虽然自增了但是又被赋值了0,这样输出的结果自然就是0了。

      不妨我们用temp临时变量来接收i++的值,来看一下结果。

     

    可以看到temp的结果就是0,也就是说赋值号右边传递过来的是i未自增前的值,这符合后自增运算符先使用后增加的原则,

    这时候我们再输出一下i的值。

    i也的确自增了一个值,这样就好理解为什么i = i++中输出第一个i为什么是0了,因为i在自增后又被等式右边的值覆盖了。

    也就是说这里的i的值发生了三次变化,第一次是我们定义i = 0;第二次就是i自增后变成了1;第三次就是i又被0值覆盖了。

  • 相关阅读:
    【MyLocations】标记位置App开发体会
    iOS开发-Core Location和Map Kit
    iOS开发-轻点、触摸和手势
    iOS开发-GCD和后台处理
    iOS开发-block使用与多线程
    iOS开发-数据持久化
    iOS开发-为程序添加应用设置
    对iOS中MVC的理解
    docker
    linux shell
  • 原文地址:https://www.cnblogs.com/A-Zero/p/11871116.html
Copyright © 2011-2022 走看看