【发布时间】:2021-05-18 11:59:06
【问题描述】:
在java中,可以有:
byte b = (int) 2;
java 自动将 int 转换为 byte 的地方。另一方面,如果我们这样做:
int a = 2;
byte b = a;
这将给出一个错误,指出所需的类型是 byte 但提供了 int。
请问如何理解为什么自动转换在int类型的字面量分配给byte类型的变量时起作用而在字面量被int类型的变量替换时不起作用的原因?
提前致谢!
【问题讨论】:
-
我认为这是因为
byte也可能是char,而char无法自动转换为int。 -
因为
a不是常量,编译器将其视为“任何 int”,因此不能保证它适合字节或者它不是很大。在 (final int a = 2;) 前面加上一个 final 修饰符,它会起作用。 -
@OHGODSPIDERS 谢谢,我认为这更有意义,您能否将您的评论转为答案?
标签: java