问题6:JAVA强制转换损失精度分析:强制转换时是去掉高位保存低位
<pre name="code" class="java">package p1;
public class test4 {
public static void main(String[] args) {
long l1=12345l;
byte b1=(byte)l1;
System.out.println("long is "+l1);
System.out.println("byte is "+b1);
}
}
输出结果:
long is 12345
byte is 57
可以看的出来long型为12345,但是byte就变成了57.明显数据不对。
分析:
long为四个字节,12345存储格式为:
byte为一个字节,即8位,强制转换时是去掉高位保存低位,所以保存的是00111001,所以输出的byte型数据是57.
其他依次类推