条件判断中,字节比较的问题。

zxt12300 2010-01-22 10:34:43
public static void main(String[] args) {
byte v1 = (byte) 0x80;
if (v1 == 0x80) {
System.out.println("== 0x80");
} else {
System.out.println("== (byte)0x80");
}

byte v2 = (byte) 0x7F;
if (v2 == 0x7F) {
System.out.println("== 0x7F");
} else {
System.out.println("== (byte)0x7F");
}
}


今天遇到了小问题,
为什么比较大于0x80的字节的时候,条件判断要写成“if (v1 == (byte)0x80) {”
而不是“if (v1 == 0x80) {”呢?
而小于0x80的就可以呢?

哪位给相信解释一下。
...全文
105 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
feifeikub 2010-01-22
  • 打赏
  • 举报
回复
支持二楼
2到20个英文 2010-01-22
  • 打赏
  • 举报
回复
记得结贴哦,呵呵
zxt12300 2010-01-22
  • 打赏
  • 举报
回复
哦,忘记java是默认用int型运算了,谢谢啦。
sj241040135 2010-01-22
  • 打赏
  • 举报
回复
支持二楼
2到20个英文 2010-01-22
  • 打赏
  • 举报
回复
0x80 = 1000 0000

这样直接写表示 int 32 位的 即 == 128

(byte)0x80 表示byte ,只有8位 1000 0000 转byte 最高位为1,即 == -128

知道为什么不能比了吧

62,620

社区成员

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

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