我对Java相对缺乏经验,所以我做了一些测试。我发现以下行为对我来说似乎很奇怪。
参加以下课程:
public class FooBar {
int foo;
public void bar() {
foo = foo + 1;
}
}
上面的代码可以编译和运行。一次运行bar()
时,foo
设置为1
。这让我感到惊讶,因为我预料会出现错误,因为第一次运行bar()
时foo
尚未初始化,因此我以为会发生错误。
自然地,我认为如果类似这样的东西行得通,那么我也希望这样的东西能够编译并运行:
public class FooBar {
public int bar() {
int foo;
foo = foo + 1; // Err: The local variable foo may not have been initialized
return foo;
}
}
但是,当尝试编译此代码时,出现错误:
本地变量foo可能尚未初始化
我的问题:为什么类FooBar
的第一个示例按预期进行编译和运行,而第二个示例却没有按预期运行?