本文正在参加「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);
}
};
输出为:
这里是因为a是byte类型,而数字10在Java语言中默认是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);
}
};
输出为:
a += b
我们再尝试使用a += b的形式进行计算。
代码如下:
public class demo1{
public static void main(String[] args) {
byte a=1;
a+=10;
System.out.println(a);
}
};
输出为:
通过程序运行,我们可以发现结果是正确的,程序也没有问题。
这里需要明确的是“+=”是Java编程语言中的一个赋值运算符,
Java运算符按其功能来分,有算术运算符、赋值运算符、关系运算符、逻辑运算符、位运算符和其他运算符。 常见的Java赋值运算符有 =、 +=、 -=、 *=、 /=、 %=、 &=、 ^=、 |=、 <<=、 >>=、
所以a += b在运算时程序会进行自动类型转换。进行向左的类型转换,因此在代码编译时没有报错。