数据类型转换规则

1.byte short char > int > long > float > double

2.byte short char之间不能互相转换

强制类型转换

byte a = 1;
int b = 2;
byte c = (byte)(a + b);
System.out.println(c);

强制类型转换造成精度丢失

byte a = (byte)129;
System.out.println(a);  // -127

129在计算中的表示为0 1000 0001

强制转换为byte数据类型 1000 0001(补码)

补码:1000 0001

反码:1111 1110

原码:1111 1111(表示-127)

以下代码不会报错

byte a;
a = 1 + 2;
System.out.println(a);

分析:12 是常量,只要运算结果不超过byte类型所能存储的最大范围,编译可以通过

以下代码会报错

byte a, b, c;
a = 1;
b = 2;
c = a + b;
System.out.println(c);

分析:byte类型参与运算,首先会转换为int类型,int类型赋值给byte类型会造成精度丢失,编译不通过