Java中的局部变量和实例变量有什么区别?

新手上路,请多包涵

除了作用域和存储方面的差异,Java 中的实例变量和局部变量之间还有其他主要区别吗?

原文由 GuruKulki 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 437
2 个回答

我能想到的一件事:

实例变量被赋予默认值,即如果它是一个对象引用则为 null,如果它是一个 int 则为 0。

局部变量不会获得默认值,因此需要显式初始化(如果您没有这样做,编译器通常会抱怨)。

原文由 Tom Jefferys 发布,翻译遵循 CC BY-SA 4.0 许可协议

我看到的主要区别在于:

范围: 局部变量仅在声明它们的方法或块中可见,而实例变量可以在类中的所有方法中看到。

声明它们的地方: 局部变量在方法或块内声明,而实例变量在类内,但在方法外。

存在时间: 局部变量在调用方法时创建并在方法退出时销毁,而实例变量是使用 new 创建的,在没有任何引用时由垃圾收集器销毁。

访问: 您不能访问局部变量,而实例变量如果声明为公共变量则可以访问。

声明位置: 局部变量在调用之前在方法或块中声明,而实例变量可以在类级别的任何位置声明(甚至在使用之后)。

实例变量总是有值,即使它们不是由代码分配的(然后它们将具有例如 null、0、0.0 和 false)。对于局部变量,必须有代码赋值。否则编译器会产生错误。

原文由 Alex Ntousias 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题