Java:字节上的算术运算

时间:2016-02-20 04:44:01

标签: java

我的代码怎么了?以下代码适用于整数类型的数据,但不适用于字节类型的数据。

public class Exchange {
    public static void main(String[] args) {
    //int a = 23, b = 44;
    byte a = 23, b = 44;
    a = a + b;
    b = a - b;
    a = a - b;
    System.out.println("a=" + a + "b=" + b);
    }
}

我知道数据类型字节可以保存范围为-2 ^(8-1)到-1 + 2 ^(8-1)的数据。但我使用的是23& 44,所以它不到127.

这里我收到错误消息"不兼容的类型:从int到byte&#34的可能有损转换。

3 个答案:

答案 0 :(得分:2)

如果你想对byte执行算术运算并将其分配回byte变量,你应该明确地让编译器知道“你知道你在做什么”,否则你将会通过将int(算术运算的结果)转换为byte(左侧)来获取您丢失信息的错误。

要解决此问题,请将算术运算的结果转换回byte:

    byte a = 23, b = 44;
    a = (byte) (a + b);
    b = (byte) (a - b);
    a = (byte) (a - b);

答案 1 :(得分:1)

简单地说,将算术运算的结果转换为byte,如下所示:

KeyPress event, serial 49, synthetic NO, window 0x3e00001,
root 0xf5, subw 0x0, time 1465436, (1196,-210), root:(1198,406),
state 0x10, keycode 255 (keysym 0x0, NoSymbol), same_screen YES,
XLookupString gives 0 bytes: 
XmbLookupString gives 0 bytes: 
XFilterEvent returns: False

提示: - 使用Alt + Enter提示

答案 2 :(得分:1)

更正后的代码在这里

 public static void main(String[] args) {
    //int a = 23, b = 44;
    byte a = 23, b = 44;
    a = (byte) (a + b);
    b = (byte) (a - b);
    a = (byte) (a - b);
    System.out.println("a=" + a + "b=" + b);
}