请看下面的例子,我无法理解char和byte之间的关系
byte b = 1;
char c = 2;
c = b; // line 1
给我编译错误,因为 c 是 char
类型,b 是 byte
类型,所以在这种情况下必须进行转换
但现在这里的推特是当我在代码下面运行时
final byte b = 1;
char c = 2;
c = b; // line 2
第 2 行编译成功它根本不需要任何转换
所以我的问题是,当我将最终访问修饰符与 byte
char
c 表现不同
最佳答案
因为用 final
限定它使变量成为常量变量,即 constant expression .所以
final byte b = 1;
char c = 2;
c = b; // line 2
实际上变成了
final byte b = 1;
char c = 2;
c = 1;
并且编译器保证值 1
可以放入 char
变量中。
对于非常量 byte
变量,没有这样的保证。 byte
is signed, char
is unsigned .
关于java - 带有最终访问修饰符的 char 和 byte - java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27044674/