为什么在使用byte添加int时需要显式强制转换?

时间:2015-07-12 20:30:09

标签: java variable-assignment literals

这样做在Java中是合法的

byte = 27     // 27 treated as int; implicit cast to byte

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

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

这背后的原因是什么?

1 个答案:

答案 0 :(得分:2)

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

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

中表示