类型转换与文本赋值
请考虑以下事项:
class TypeCast {
public static void main(String[] args) {
byte by = 4; // Compiler casts int literal to byte
int in = 4;
byte byt = in; // Compilation Error: compiler can not cast automatically. WHY?
}
}
我知道编译器可以在文字分配的情况下进行缩小。但是,当赋值涉及变量而不是文字时,它不能做同样的事情。为什么?
编辑:我想大多数人都无法理解我想问什么。它不是关于分配“超出范围”的值,而是关于分配“范围内”值,并让编译器处理缩小。很明显,“字节”将无法处理超出范围的值,并且需要显式转换(这不是我想知道的)。byte
给定值在范围内,文本赋值到 和类型变量赋值有什么区别?byte
int
byte
int
byte