为什么在用字节添加 int 时需要显式转换?

Why explicit cast required when adding int with byte?

在Java

这样做是合法的
byte = 27     // 27 treated as int; implicit cast to byte

但是当作为表达式的结果赋值时,Java需要显式转换

int a = 9;
byte b = 8;
byte c = a + b;  // Compile error

这背后的原因是什么?

27 是文字。编译器知道它可以用 byte(从 -128 到 127)表示。

a + b是一个涉及变量的表达式。其结果可能无法在 byte

中表示