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

文章讨论了在Java中byte类型与数值进行比较时会隐式转换为int类型,导致可能的正负数变化。例如,byte值0x80转换为int会变成-128。当使用`&0xFF`操作时,可以实现无符号转换。测试代码展示了不同比较方式下的结果,如`cmd>1`、`(cmd&0xFF)==250`和`cmd==250`的输出情况。
摘要由CSDN通过智能技术生成

一、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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值