02.14_Java语言基础(数据类型转换之强制转换)


* 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

猜你喜欢

转载自blog.csdn.net/qq_38835140/article/details/86771485