java的int和byte类型的转换

2017-07-17  本文已影响0人  巨狮座

例子一:

① byte a=1; //通过

当字面整数常量保存到byte、short、long 或char类型的变量中时,Jdk会执行自动类型转换,概括说就是整型值赋值的时候可以自动转换

② byte b=a+1; //编译报错

1默认是 int 类型,而 a 和 b是 byte类型,在运算的时候 a会自动转换为 int 类型与1相加,而结果会变成 int 类型,这个时候大类型就不能自动转化成小类型,必须显式强制转换  byte b = (byte) (a+1)


例子二:

int x = 266;                                                        int x = 206;   

b =(byte)x ;                                                        b =(byte)x ;

System.out.print(b) //输出 10                            System.out.print(b) //输出 -50

原因:

int 是32位 4个字节 8位1字节

int转换成byte 前面的3个字节 即24位 直接砍掉 就剩最后一位

所以 266 ——(00000000)(00000000)(00000001)(00001010)= 0001010 = 10

        206 ——(00000000)(00000000)(00000001)(11001110)= 11001110= -50

最高位是 0 表示是正数,如果是1表示负数,要先按位取反再加1


上一篇 下一篇

猜你喜欢

热点阅读