Java中 a+=b和a=a+b的不同
直接上代码
public class 赋值运算符 {
public static void main(String[] args) {
//第一种
short a=1,b=1;
a=a+b;//不兼容的类型: 从int转换到short可能会有损失
//第二种
short a2=1;
a2=a2+1;
//第三种
short a3=1;
a3 = (short)(a3+1);
System.out.println(a3);
//第四种
short a4=1;
a4 +=1;
System.out.println(a4);
}
}
详解代码:
- 第一种已经确保a变量和b变量都为short型,但是仍然运行会报错
- 第二种a2变量为short了,但进行加1的时候也会进行报错且情况和第一次一样
- 第三种就是属于强制转换,但是这种转换可能会导致溢出或者精度的下降,如果容忍可能出现的误差,可以使用这种转换。
- 第四种其实就是第三种,是默认了强制换行了,这种写法不会改变变量本身的类型,所以更加推荐后面这种写法
ps:对于精度小于int的数值运算,会被转换为int再进行运算;+=,java语言规定的运算符,编译器对其进行特殊处理,进行向左的类型转换,java语言中,a+=b和a=a+b的主要区别是在运算的精度上