这样做在Java中是合法的
byte = 27 // 27 treated as int; implicit cast to byte
但是当作为表达式的结果赋值时,Java需要显式转换
int a = 9;
byte b = 8;
byte c = a + b; // Compile error
这背后的原因是什么?
答案 0 :(得分:2)
27
是一个文字。编译器知道它可以在byte
中表示(从-128到127)。
a + b
是一个涉及变量的表达式。其结果可能无法在byte