我试图在我的程序中使用静态变量,并理解静态变量意味着每次都使用变量的相同实例。
然而,我一直在使用静态变量,因为我觉得它允许我在不‘实例化’(新)类的情况下获得我需要的变量。或者特别是因为我需要另一个类中的变量,并且我不应该创建该类的新实例。
这是正确的做法吗?
我是否应该创建静态GET方法来获取在类中声明的静态变量?
发布于 2011-08-04 07:21:17
...,我一直在使用静态变量,因为我觉得它允许我在不‘实例化’(新)类的情况下获得所需的变量
声明一个变量静态并不意味着你绕过了新的。它只是表示变量引用了它的类的一个实例,而且只引用了一个实例。
示例:
class Universe {
//there is only one Earth, but it needs to be constructed. In this example, when
//the Universe class is loaded, the initialization below happens.
static World EARTH = new World(...);
public static Planet getTheEarth() {
return EARTH;
}
},或者特别是因为我需要另一个类中的变量,并且我不应该创建该类的新实例。
好的,那么把对变量的引用传递给另一个类。
示例:
class Earth {
Moon moon;
public Earth(Moon moon) {
this.moon = moon;
}
}发布于 2011-08-04 07:15:25
如果您想在一个类的所有实例之间共享一个值,则使用静态变量。例如,如果你有像这样的东西
public class Person {
public static int instancesCount = 0;
public Person() {
Person.instancesCount++;
}
}这意味着对于每个Person实例,“全局”instanceCount变量将递增1。所以如果你这样做了
Person p1 = new Person();
Person p2 = new Person();然后,这两个实例(p1和p2)都可以访问Person.instanceCount变量,并且它们都将显示数字2。此外,如果您修改其中任何一个实例中的变量,那么这两个实例将具有相同的可见性。
基本上,除非你知道你在做什么,否则不要使用静态变量。
发布于 2011-08-04 07:18:28
首先,您不应该使用GET方法来获取类中声明的静态变量。例如,如果你想打印静态变量,你可以这样做:
static int staticVariable = 0;
ClassObject c;
System.out.println(c.staticVariable);基本上,类的任何对象都可以访问静态变量,您所要做的就是使用类的实例来访问它。我建议在您对静态变量有更好的理解之前,不要使用它们。
https://stackoverflow.com/questions/6934396
复制相似问题