网站链接: element-ui dtcms
当前位置: 首页 > 技术博文  > 技术博文

java中i++和局部变量的问题

2021/4/11 21:49:24 人评论

java中i和局部变量的问题 之前一直以为i是先做运算,再自加,但是碰到一个很简单的问题却打破我原来的认识,以前学的时候,老师也是这么说的,所以一直有一种根深蒂固的思想(好多老师不知道误导了多少人&#…

java中i++和局部变量的问题

之前一直以为i++是先做运算,再自加,但是碰到一个很简单的问题却打破我原来的认识,以前学的时候,老师也是这么说的,所以一直有一种根深蒂固的思想(好多老师不知道误导了多少人)。还好我遇到了这种问题,才能查出错误。
下面是这个问题:

package com.company;

public class localVar {
    public void autoIncrement(int i){
        i++;

    }
    public static void  main(String args[]){
        int i = 0;
        localVar temp = new localVar();
        /*
        这一行的代码是这样:i++底层实现(int temp = i;i=i+1;return temp;)
        实际执行过程1.i = i+1;2.i = temp;(原始值)
        虽然自加了,但是是在运算前自加,所以没用;
         */
        i=i++;

        System.out.println("i的值:"+i);
        /*
        这一行的代码是这样:只是把外面的参数i传递进去,
        然后用函数的内部空间赋值一个新变量,
        没有将改变后的值传递出来。
        实际执行过程:int temp = i;
        temp++;
        想要传递出来就要加return i;
         */

        temp.autoIncrement(i);
        System.out.println("i的值:"+i);
    }
}

如上所示:第一个输出的i值其实是0,如果你以前一直是我上面所说的错误的认识,那么会认为输出的是1。
控制台输出结果
第二个输出其实对于jvm认识不是很深的话就会出错,认为输出也是1,其实是0。所以学好代码还是要学习底层的原理,不能拿来就用,否则会有很多错误。

总结:好好看书,少听别人讲。

相关资讯

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?