Java 中局部变量、实例变量和静态变量的区别

2024 年 12 月 26 日 | 阅读 4 分钟

在 Java 编程领域,变量是存储数据的关键部分。局部变量、实例变量和静态变量是三种最常见的变量形式。虽然它们都具有存储数据的函数,但在特性和应用方面有所不同。在本节中,我们将讨论局部变量、实例变量和静态变量之间的区别。

局部实例变量

局部实例变量与特定的类实例相关联,也称为实例变量。它们在类内部声明,但在任何构造函数、方法或代码块之外。这些变量与实例化的类对象一起创建和关联。

Car.java

输出

Brand: Toyota
Year: 2022
Brand: Honda
Year: 2017

解释

在本例中,年份和品牌是局部实例变量。这些变量对于 Car 类的每个实例(car1 和 car2)都是唯一的,并且可能具有不同的值。

实例变量

实例变量是在类内部定义,但不包含在任何构造函数、方法或代码块中的变量。它们有时也称为成员变量或对象变量。这些变量与类的实例或对象相关联。

Person.java

输出

Person 1:
Name: Ram
Age: 25

Person 2:
Name: Ravi
Age: 30

解释

当在 main() 方法中创建两个 Person 对象 p1 和 p2 时,实例变量的姓名和年龄被设置为不同的值。对每个对象的 displayInfo() 方法进行调用,该方法会相应地输出姓名和年龄值。因此,输出将显示两个人的姓名和年龄。

静态变量

相比之下,静态变量与类本身相关联,而不是与类的特定实例相关联。它们独立于所有其他对象存在,并使用 static 关键字进行指定。静态变量由类的所有实例共享,并且对于整个类只有一个副本。

Value.java

输出

Count variable Value: 2

局部变量与实例变量与静态变量的区别

方面局部变量实例变量静态变量
声明局部变量在方法内部声明。实例变量在类内部声明,但在方法、构造函数或任何代码块之外。用 static 关键字声明并在任何方法外部定义的变量。它不能是局部的。
初始化局部变量在使用前必须初始化。每次创建类的实例时都会初始化。仅在程序执行开始时初始化一次。
范围局部变量的作用域仅限于定义它的过程(在其整个方法中)。其作用域在整个类定义中。其作用域在整个类定义中。
生命周期其生命周期在每次调用方法时存在。其生命周期在整个对象生命周期中。其生命周期在整个程序生命周期中。
对对象的访问在尝试使用局部变量之前必须对其进行初始化,否则编译器会报错。可以使用任何对象实例来调用它们。可以使用类名或任何对象实例来调用它们。
在静态上下文中的使用它不能用 static 关键字定义。它没有声明为 static。它被声明为 static。
复制我们可以通过将局部变量的值赋给同一作用域内的另一个新变量来创建局部变量的副本。每个实例都有其自己的变量副本。只有一个副本存在,并在类的所有实例之间共享。

结论

总而言之,静态变量由类的所有实例共享,而局部实例变量是每个实例独有的。我们将选择哪个选项取决于 Java 程序的特定需求。为了有效地使用变量,我们必须了解它们之间的区别。