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的可能有损转换”。

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

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

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

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

 public class Exchange { 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); } } 

提示: – 使用Alt + Enter提示

更正的代码在这里

  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); }