1.3 a += b 和 a = a + b 的效果有区别吗?| Java Debug 笔记

345 阅读2分钟

本文正在参加「Java主题月 - Java Debug笔记活动」,详情查看 活动链接

Debug 笔记 <a += b 和 a = a + b 的效果有区别吗?>

在Java编程语言中, 我们常常会看见a += b a = a + b 的计算形式。类似的计算形式还有“-=*=/=%=

那这些计算形式有什么区别呢,我们深入来探究一下。

a = a + b

我们先尝试使用a=a+b的形式进行计算。 代码如下:

public class demo1{
    public static void main(String[] args) {
        byte a=1;
        a=a+10;
        System.out.println(a);
    }
};

输出为:

image.png

这里是因为abyte类型,而数字10Java语言中默认是int 类型。在Java中,在a+10时,会进行 自动类型转换 ,所以a+10会转换成int类型。而变量a还是byte类型,将int类型的a+10赋值给byte类型的a ,代码就会报错。

当然,我们也可以进行强类型转换,将已经转换成int类型的a+10强制转换为byte类型。

代码如下:

public class demo1{
    public static void main(String[] args) {
        byte a=1;
        a=(byte)(a+10);
        System.out.println(a);
    }
};

输出为:

image.png

a += b

我们再尝试使用a += b的形式进行计算。 代码如下:

public class demo1{
    public static void main(String[] args) {
        byte a=1;
        a+=10;
        System.out.println(a);
    }
};

输出为:

image.png

通过程序运行,我们可以发现结果是正确的,程序也没有问题。 这里需要明确的是“+=”是Java编程语言中的一个赋值运算符,

Java运算符按其功能来分,有算术运算符、赋值运算符、关系运算符、逻辑运算符、位运算符和其他运算符。 常见的Java赋值运算符有 =、 +=、 -=、 *=、 /=、 %=、 &=、 ^=、 |=、 <<=、 >>=、

所以a += b在运算时程序会进行自动类型转换。进行向左的类型转换,因此在代码编译时没有报错。