java基础系列 --------------- +=运算符

        在面试当中常常会遇到这样一个问题:a = a + b和 a += b有一样吗?

        我们看a = a + b是一个很简单的操作:

                (1)现在栈中计算出 a + b的值,存在栈空间的一个内存位置&value

                (2)然后将&value的值赋值给a

        但是+=是并不是这样的,在Java中+=只是一个操作符,怎么理解呢?比如在a = a + b 中,显示计算,然后复制,在计算的时候是不会校验操作符两侧的数据类型的,而在赋值的时候,就会校验等号两边的数据类型,如果类型不匹配,Java编译器就会报错。但是+=是不会校验数据类型的,会直接将计算的结构放在a中,但是a 和b的数据类型是不会变化的。

        看以下代码的操作结果:

    @Test
    public void test1() {
        int a = 1;
        double b = 0.1;
        a += b;
        System.out.println(a);
        System.out.println(b);
    }

        输出结果为:1  和 0.1

        说明:a + b后得到的1.1在赋值给a的时候按照a的数据类型转换成了int型

        而 a = a + b 是会报编译错误的

你可能感兴趣的:(java基础系列,java,开发语言,后端)