字节不在Java中显示添加结果

use*_*808 1 java variables byte addition

为什么我没有得到输出,因为byte值是-128到127,结果是30?

class test15 {          
   public static void main(String ...s) {
      byte a = 10;
      byte b = 20;
      byte c = a+b;
      System.out.println(c);
   }    
}
Run Code Online (Sandbox Code Playgroud)

Sur*_*tta 5

CompileTime vs RunTime

a,b是字节,字节没有加法运算符.在运行时,因为a,b不是最终的,所以发生整数加法,结果是a int.而你正试图将它分配给一个字节.这导致编译错误.

byte c = (byte)a+b;
Run Code Online (Sandbox Code Playgroud)

并作为旁注.尝试将您的代码更改为

 final byte a = 10;
 final byte b = 20;
 byte c = a + b;
Run Code Online (Sandbox Code Playgroud)

由于转换变窄,编译很好,如果所有操作数都是表达式中的常量值,则可能.