您似乎没有区分静态变量和实例变量.静态变量是在类本身上定义的.实例变量仅存在于类实例中.
例:
class Test {
public static int a;
}
变量a在类本身上定义,而不是在类的实例上定义.每个实例都将访问同一个变量.如果一个实例将a的值设置为5,则每个其他实例都将该值视为5.一旦实例消失,该变量将不会消失,因为它绝不会绑定到任何实例(它是类变量).它会一直持续到那个时间结束(或者直到应用程序退出,以先到者为准).
另一方面,以下示例使用实例变量:
class Test {
public int a;
}
此变量只能从类的实例访问.每个实例都有一个不同的变量副本.一旦实例被销毁,变量就会随之而来.
为了显示:
import java.util.List;
import java.util.ArrayList;
class Test {
// instanceVar will be initialized whenever a new Test object is created
private List instanceVar = new ArrayList();
// staticVar will be initialized right now
private static List staticVar = new ArrayList();
public void updateInstanceVar() {
instanceVar.add(1);
instanceVar.add(2);
}
public void updateStaticVar() {
staticVar.add(1);
staticVar.add(2);
}
public static void main(String[] args) {
Test test1 = new Test();
test1.updateInstanceVar(); // test1.instanceVar = [1, 2]
test1.updateStaticVar(); // Test.staticVar = [1, 2]
Test test2 = new Test();
test2.updateInstanceVar(); // test2.instanceVar = [1, 2]
test2.updateStaticVar(); // Test.staticVar = [1, 2, 1, 2]
}
}