我有两个几乎相同的程序,一个可以编译,另一个不行。为什么?
我将一个int
变量赋值给了一个byte
变量。
这个可以编译:
class Example {
public static void main(String args[]) {
final int x = 127; // directly initialized
byte b;
b = x;
System.out.println(b);
}
}
这个无法编译:
class Example {
public static void main(String args[]) {
final int x;
x = 127; // assigned later
byte b;
b = x;
System.out.println(b);
}
}
编译器在
b = x;
处显示类型不兼容。但是第一个版本不也应该是这样吗?