Java中的类变量和成员变量之间有什么区别

时间:2014-10-21 13:48:37

标签: java variables

没有太多要解释的。标题足以解释这个问题。我今天接受了采访。

What are class variables and member variables in Java?

谢谢!

2 个答案:

答案 0 :(得分:3)

正如Zhuinden所说,他们可能意味着静态变量而不是类变量。对于成员变量,需要该类的实例才能访问该变量。例如,如果我有一个类Foo,并且它有一个成员变量int bar,我可以访问它的唯一方法是做类似的事情

Foo foo = new Foo();
doSomething(foo.bar);

但是,如果我有一个静态变量,那就意味着我可以访问它,即使我没有该对象的实例。我会像这样访问它:

doSomething(Foo.bar)

无需创建Foo实例。

请参阅here

答案 1 :(得分:1)

一个成员变量是每个对象一个,每个对象都有自己的实例变量副本,而一个类变量是每个类一个,该类的每个对象共享同一个类变量。

当JVM加载类时,也会初始化一个也称为静态变量的类变量,如果程序中没有main方法,则可能需要一个示例静态块,而这与成员变量不同。

当您不想为每个实例复制时,应使用类变量 当您希望为每个对象实例单独复制时,应使用成员变量。

从垃圾收集的角度来看,类变量的寿命很长,因为类变量与类相关联,而不是与单个实例相关联。 在卸载类的ClassLoader时清除类变量。这是非常罕见的。在成员变量的情况下,它们会在清理实例时得到清理。希望这会有所帮助。