除了作用域和存储方面的差异,Java 中的实例变量和局部变量之间还有其他主要区别吗?
原文由 GuruKulki 发布,翻译遵循 CC BY-SA 4.0 许可协议
除了作用域和存储方面的差异,Java 中的实例变量和局部变量之间还有其他主要区别吗?
原文由 GuruKulki 发布,翻译遵循 CC BY-SA 4.0 许可协议
我看到的主要区别在于:
范围: 局部变量仅在声明它们的方法或块中可见,而实例变量可以在类中的所有方法中看到。
声明它们的地方: 局部变量在方法或块内声明,而实例变量在类内,但在方法外。
存在时间: 局部变量在调用方法时创建并在方法退出时销毁,而实例变量是使用 new 创建的,在没有任何引用时由垃圾收集器销毁。
访问: 您不能访问局部变量,而实例变量如果声明为公共变量则可以访问。
声明位置: 局部变量在调用之前在方法或块中声明,而实例变量可以在类级别的任何位置声明(甚至在使用之后)。
实例变量总是有值,即使它们不是由代码分配的(然后它们将具有例如 null、0、0.0 和 false)。对于局部变量,必须有代码赋值。否则编译器会产生错误。
原文由 Alex Ntousias 发布,翻译遵循 CC BY-SA 4.0 许可协议
4 回答1.5k 阅读✓ 已解决
4 回答1.3k 阅读✓ 已解决
1 回答2.6k 阅读✓ 已解决
2 回答762 阅读✓ 已解决
2 回答1.8k 阅读
2 回答1.7k 阅读
2 回答1.3k 阅读
我能想到的一件事:
实例变量被赋予默认值,即如果它是一个对象引用则为 null,如果它是一个 int 则为 0。
局部变量不会获得默认值,因此需要显式初始化(如果您没有这样做,编译器通常会抱怨)。