* A:强制转换问题
* int a = 10;
* byte b = 20;
* b = a + b;
* B:强制转换的格式
* b = (byte)(a + b);
解释byte+int类型的问题
(1)00000000 八位表示一个字节
(2)byte b=4; byte占一个字节 4表示为00000100
(3)int x=3; int占四个字节 ,表示:
00000000 00000000 0000000 00000011
(4)byte类型提升为int型,
表示:
00000000 00000000 00000000 00000100
(5)相加:得int类型
00000000 00000000 00000000 00000111
(6) b = a + b;结果要求byte类型,把前面的24个0去掉(强制转化)
* C:强制转换的注意事项
* 如果超出了被赋值的数据类型的取值范围得到的结果会与你期望的结果不同
(1)
byte b=126+4;
System.out.println(b); //报错,byte的取值范围是-128到127
byte b=(byte)(126+4); //130
System.out.println(b); //输出的结果为-126
00000000 00000000 00000000 10000010 130的二进制
10000010 -126的补码(运算以补码进行运算)
00000001 -1求反码
10000001 -126反码
11111110 -126原码
(2)
byte b2=(byte)300;
System.out.println(b2); //输出44
300是int类型的,占四个字节 二进制表示:
00000000 0000000 00000001 00101100 //300的二进制
00101100 //要强转化为byte类型,去掉前面的三个八位 44