为什么我们不需要初始化实例变量

时间:2019-08-03 01:06:55

标签: java instance-variables

我对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的第一个示例按预期进行编译和运行,而第二个示例却没有按预期运行?

0 个答案:

没有答案