参考文章
http://blog.csdn.net/bingduanlbd/article/details/27790287
http://my.oschina.net/u/1024767/blog/178960
场景:
工作中使用webservice时,直接将16进制数据写入文件保存,在以byte读取时,自动转换为int型,发现9B的值为-101。
学习:
java基础数据类型有:
类型 | byte | short | char | int | long | float | double |
---|---|---|---|---|---|---|---|
bits | 8 | 16 | 16 | 32 | 64 | 32 | 64 |
java中数值以补码存储,若将int型数值强行转换为byte型,当数值在[-128,127]内时,存储不变,不在这个范围是,将会获得取余值。
在自动类型转化中,除了以下几种情况可能会导致精度损失以外,其他的转换都不能出现精度损失。
》int–> float
》long–> float
》long–> double
》float –>double without strictfp
除了可能的精度损失外,自动转换不会出现任何运行时(run-time)异常。