int类型转换成byte时,如果超出byte的取值范围会怎么处理呢?

yezersky 2009-04-05 11:36:49
int类型转换成byte时,如果超出byte的取值范围会怎么处理呢?

比如:
int a=300;
(byte)a=?
...全文
799 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
asdtiang 2009-04-05
  • 打赏
  • 举报
回复
关于精度丢失问题,JVM都是把数据转化为二进制后将多余的高位截去,如byte为8位 int为32位。当int转为 byte时,只取
int的低8位,这里要注符号位的问题,如果int的二进制为:110111111(447),低8位为10111111,这时byte将最高位做
为符号位,1为负,0111111(35),结果为-35,一个正的int型值,经过强制转化为负值,这点要注意,最好在程序中避免使
用强制转化。
asdtiang 2009-04-05
  • 打赏
  • 举报
回复
300的二进制表示为:100101100
执行(byte)a;时,会把高位截去,即三楼所说的哪样,
因此b的二进制为00101100,最高位为符号位,0为正1为负。
101100转化为十进制时为:44;
因此结果为44
wanglingzhong 2009-04-05
  • 打赏
  • 举报
回复
最好上机试试,结果是三楼的答案
网络咖啡 2009-04-05
  • 打赏
  • 举报
回复
取int的低8位的机器码作为byte的机器码。
不善^ 2009-04-05
  • 打赏
  • 举报
回复
这样的问题你应该自己上机试下啊



public class testByte {


public static void main(String[] args) {
int a=300;
System.out.println((byte)a);

}

}
yezersky 2009-04-05
  • 打赏
  • 举报
回复
继续求助……

13,100

社区成员

发帖
与我相关
我的任务
社区描述
Java J2ME
社区管理员
  • J2ME社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧