在Java中,成员变量和全局变量(在Java中一般称为类变量)是两种不同类型的变量,主要区别在于它们的声明位置和生命周期。
1.成员变量(Instance Variable)
成员变量是定义在类中但不在任何方法或构造函数中的变量。它们属于类的每个实例(对象)。每创建一个对象,就会有一组新的成员变量实例。
示例:
public class Example {
// 成员变量
int instanceVariable;
// 构造函数
public Example(int value) {
this.instanceVariable = value;
}
// 方法
public void printInstanceVariable() {
System.out.println("Instance Variable: " + instanceVariable);
}
public static void main(String[] args) {
Example example1 = new Example(10);
Example example2 = new Example(20);
example1.printInstanceVariable(); // 输出:Instance Variable: 10
example2.printInstanceVariable(); // 输出:Instance Variable: 20
}
}
在这个例子中,instanceVariable
是一个成员变量,每个 Example
对象都有自己独立的 instanceVariable
。
2.类变量(Class Variable)
变量是用
static
关键字修饰的变量。它们属于类而不是类的实例。无论创建多少个对象,类变量只有一份,并且被所有对象共享。
示例:
public class Example {
// 类变量
static int classVariable;
// 构造函数
public Example(int value) {
classVariable = value;
}
// 方法
public void printClassVariable() {
System.out.println("Class Variable: " + classVariable);
}
public static void main(String[] args) {
Example example1 = new Example(10);
Example example2 = new Example(20);
example1.printClassVariable(); // 输出:Class Variable: 20
example2.printClassVariable(); // 输出:Class Variable: 20
}
}
在这个例子中,classVariable
是一个类变量,无论创建多少个 Example
对象,classVariable
的值都是共享的,并且在任何一个对象中被修改都会影响所有对象。
3.区别总结
-
成员变量:每个对象有独立的成员变量实例。
-
类变量:所有对象共享一个类变量。
通过这两个例子可以清楚地看到,成员变量的生命周期与对象实例相关,而类变量的生命周期与类本身相关,且只有一份存在于内存中。