-----------siwuxie095
大类型向小类型转换:
即 强转类型转换-简称 强转,或 显式类型转换
Java在进行整数运算时默认是按照int类型处理的,因此 b+10 的结果
是int类型的,虽然没有超过byte类型最大值,但仍要求 b+10 的结果
赋值给字节类型变量时要做强制类型转换
强转 的写法:用一对小括号,括号里是要转换类型的关键字,
后面是转换的表达式 或 值
Java对于像 5+10 这样明显的可以得出结果的字面量的运算,在编译时
直接将 5 和 10 相加,如果结果没有超过字节类型的最大值,就没有错误
即结果 15 在编译期间就保存在变量 b 中,无需类型转换
强制类型转换时,要注意边界数风险问题
具体含义:
大类型向小类型转换时,有可能数据位成为小数的高位的符号位,
也有可能超过小类型存储的最大值
如:
大类型转小类型时,源数据的数据位变为目标数据的符号位
字节类型的最大值是 127,那么 129 存储在 b 中,肯定就不是 129 了
将int类型(32位)的 129 转换为二进制,即:10000001
(共 8 位,高位 24 位的 000… 省略)
而 byte类型只有 8 位,则 10000001,就变成了负数
所有位取反:01111110,再加1:01111111,即 127
所以 b 的最终结果是 -127
再如:
大类型的数据超过了小类型的位数
定义int类型变量 i 赋值 257,如果将 i 的值强制转换为byte类型,保存在b 中
将int类型(32位)的 257 转换为二进制,即:100000001
(共 9 位,高位 23 位的 000… 省略)
而byte类型只能存 8 位,那么最高位的 1 将丢失掉,
剩下:00000001,即 1
即int类型 257 转换为byte类型后是 1
【made by siwuxie095】