类似于 - Why are static variables considered evil?
我也是业内新手程序员。我在整个应用程序中声明的所有类中都看到了很多静态变量。使类变量静态的优点是什么?
我注意到每个类至少包含一个静态变量。
示例:
public class FileWriter{
private static Properties configProps = null ;
private static String propertyFile = "config/database.properties";
private static String LOG_PROPERTIES_FILE = "config/log4j.properties";
.
.
.
我知道这些变量对所有对象都是通用的。比方说,FileWriter的object1和FileWriter的object2是否使用在内存中只有一个位置创建的相同变量configProps?
在下面的例子中,numberA不应该是静态变量?如果它被声明为静态会发生什么?
public class sumFinder{
private int numberA=0;
}
如果它太傻了,请原谅。
由于
答案 0 :(得分:3)
如果我们将变量声明为static
,我们可以承认JVM
中只有一次出现该类实例化的次数。
例如:
public class A{
private static int id;
// getter setter
}
现在来自main()
A a=new A();
a.setId(2);
当你在其他地方a.getId()
打电话给2
时,会在设置A
之后id
实例化多少次。
答案 1 :(得分:2)
这是来自here的确切字词:
有时,您希望拥有所有对象共有的变量。这是通过静态修改器完成的。在声明中具有static修饰符的字段称为静态字段或类变量。它们与类相关联,而不是与任何对象相关联。该类的每个实例共享一个类变量,该变量位于内存中的一个固定位置。任何对象都可以更改类变量的值,但也可以在不创建类实例的情况下操作类变量。
我认为使用任何东西都没有优势,但需要使用一些东西。和静态相同。我希望你知道静态变量的作用,你只需要知道何时使用它们。
简单来说,如果你想使用一个独立于对象的变量并在所有对象之间使用它们,你可以使用静态变量。
答案 2 :(得分:1)
假设有两个女孩girl1和girl2,他们有一个名叫luckyboy的男朋友。
因此,幸运男孩可以同时与两个女孩一起出去,从而节省他的时间(和记忆丧失)。所以这两个女孩都有一个共同的属性男朋友,即luckyboy
以相同的方式静态字段对于所有创建的对象都是通用的,所以这里boysfriendName属性(静态)对于2个女孩来说很常见,而girl1Name和gilr2Name属性对于girl1和girl2对象分别是非静态的。
现在想想,如果幸运男孩拥有10亿女朋友,那么通过服用会节省多少记忆 每个女孩的boysfriendName属性为静态。
所以它节省了内存