2023-05-20 Java中byte类型与数字比较,需要用&0xFF 无符号转换转化成int

一、java 的byte 类型跟数值比较的时候byte数会隐式转成int再比较,最高位为1的byte转为int就为负数,比如byte cmd = 0x80,有符号转成int 会等于-128。

二、byte cmd = 0x80;用cmd == 0x80做比较的结果是false,因为cmd 会隐性转成int,是负数。

三、byte cmd = 0x80;(cmd & 0xFF) == 0x80) 做比较的结果是true,通过&0xFF 无符号转换转化成int。

四、测试代码

public class Main {
	public static void main(String[] args) {
 
	    
	    byte cmd = (byte)250;
	    byte data = (byte)0x80;
	    
	     System.out.println("byte data=" + data); 
	    
	    if(cmd > 1)
	       System.out.println("cmd > 1");
       else 
           System.out.println("cmd < 1");
           
	    if((cmd & 0xFF) == 250)
	        System.out.println("one cmd = 250");
	        
	    if(cmd == 250)
	        System.out.println("two cmd = 250");
	        
	}
}
标准输出:
byte data=-128
cmd < 1
one cmd = 250

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值