我的代码怎么了?以下代码适用于整数类型的数据,但不适用于字节类型的数据。
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的可能有损转换。
答案 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);
}