左移运算符使用时int与Byte类型混淆问题排查
Byte类型左移运算出现“不兼容类型”错误的解决办法
在Java里,byte、short、char这类小整数类型做运算(包括左移<<)时,会自动提升为int类型。所以你用byte变量做左移后,得到的结果是int类型,直接赋值回byte变量就会触发“不兼容类型”的编译错误。
解决办法很简单:给左移运算的结果加强制类型转换,把它转成byte类型。
举个例子:
错误代码:
byte num = 5; byte result = num << 2; // 编译报错:不兼容的类型: 从int转换到byte可能会有损失
修正后的代码:
byte num = 5; byte result = (byte)(num << 2); // 强制转换后正常编译
注意:如果左移后的数值超出byte的取值范围(-128到127),强制转换会导致数值溢出,比如byte num = 127; byte result = (byte)(num << 1);,最终result的值会是-2,这是整数溢出后的正常结果,使用时要留意这种情况。
内容的提问来源于stack exchange,提问作者Hemant Singh Tanwar
相关产品推荐
相关产品推荐

