如下代码,会报编译错误:
报错信息显示需要byte,但提供了int,按道理不应该自动转换吗?是的,正常是可以正常转换的,但是这里0Xa1
,编译器默认按照int来处理,所以其对应的二进制就是00000000 00000000 00000000 10100001
,对应的十进制就是161,超出了byte的范围-128~127,所以无法完成自动的转换使用byte来表示,那如果是不超过byte的范围的十六进制表示是不是就可以了呢,是的,如下:
再回到开始的问题,如何让它不报错呢,强转为byte就行,从4字节强制转换为1字节,又因为java中都是有符号数,所以,此时就会变为负数了,如下:
文章评论