我有两个几乎相同的程序。第一个编译,第二个不编译。为什么?
我正在将一个int变量分配给一个byte变量。
这个编译:
class Example {
public static void main(String args[]) {
final int x = 127; // directly initialized
byte b;
b = x;
System.out.println(b);
}
}
Run Code Online (Sandbox Code Playgroud)
这个不编译:
class Example {
public static void main(String args[]) {
final int x;
x = 127; // assigned later
byte b;
b = x;
System.out.println(b);
}
}
Run Code Online (Sandbox Code Playgroud)
编译器说,不兼容的类型的b = x;。但是不应该同样适用于第一个版本吗?