码迷,mamicode.com
首页 > 编程语言 > 详细

Java下的i++问题

时间:2015-11-06 22:18:41      阅读:301      评论:0      收藏:0      [点我收藏+]

标签:

  在解决一道面试题目时遇到问题。

public class Inc {
    public static void main(String args[]){
        Inc inc = new Inc();
        int i =0;
        inc.fermin(i);
        i=i++;
        System.out.println(i);
    }
    void fermin(int i){
        i++;
    }
}

  题目答案是输出0。

  查阅相关资料时,才知道i=i++这一步,真实执行情况是temp = i;i=i+1;i=temp;

  未验证真是如此,我将代码改为如下:

public class Inc {
    public static void main(String args[]){
        Inc inc = new Inc();
        int i =0;
        inc.fermin(i);
        int j=i++;
        System.out.println(j);
    }
    void fermin(int i){
        i++;
    }
}

  输出结果依旧是0,这符合预期。即:temp=i;i=i+1;j=temp;

  而不仅仅是像有些C/C++那样只执行了i++这一步

  实际上,i=i++,亦或是j=i++之后由于执行i++这步,i的值都会有所增加,只是之后i(/j)=temp这步又将i值变回去,所以只要将代码改成如下这样就可以看到i值的变化了

public class Inc {
    public static void main(String args[]){
        Inc inc = new Inc();
        int i =0;
        inc.fermin(i);
        int j=i++;
        System.out.println(i);
    }
    void fermin(int i){
        i++;
    }
}

  输出的结果是1

  说到底其实还是编译器的问题,没必要过分纠结于此!

  

 

 

Java下的i++问题

标签:

原文地址:http://www.cnblogs.com/ecoowu/p/iplusplusprobleminjava.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!