我们通过以下一段代码来初步认识一下JAVA。
代码一:
public class test {
public static void main(String []args) {
byte b = 1;
b += 1;
System.out.println(b);
}
}
代码二:
public class test {
public static void main(String []args) {
byte b = 1;
b = b + 1;
System.out.println(b);
}
}
我们可以发现在JAVA中,代码一的编译结果为"2"但是代码二的编译是错误的。
![](https://i-blog.csdnimg.cn/blog_migrate/5426f711dd3f26f4e42c1bb15316f311.png)
![](https://i-blog.csdnimg.cn/blog_migrate/7dd18304e07b88b8dd372ec9af2932a1.png)
这就涉及到JAVA的一个精度损失问题,b原本是定义为byte型,由自动类型转换定义可知:当容量小的数据类型和容量大的数据类型做运算时,容量小的数据类型会自动转化为容量大的数型。"b+=1"中"1"默认为int型,"b"自动转化为int型与"1"进行运算,结果为int型,把int型赋给byte型,容量大的赋值给容量小的会有精度损失,故编译错误。 "b += 1"相当于"b =(byte)( b + 1)",底层会对这个结果进行强制类型转换。