这个
18
被称为整数文字。有各种各样的文字,浮点数
String,,字符等。
在下面的,
byte b = 3;
文字
3是整数文字。这也是一个常量表达式。并且由于Java可以告诉它
3适合
byte,因此它可以安全地应用缩小的原始转换并将结果存储在
byte变量中。
在这个
int i = 3;byte bb = i; //error!
文字
3是一个常量表达式,但变量
i不是。编译器只是简单地认为
i它不是一个常量表达式,因此不会竭尽全力找出它的值,对的转换
byte可能会丢失信息(如何转换
12345为
byte?),因此不应该被允许。您可以通过制作
i一个常量变量来覆盖此行为
final int i = 3;byte bb = i; // no error!
或通过指定显式强制转换
int i = 3;byte bb = (byte) i; // no error!



