为什么我们对类变量使用static?

时间:2014-09-30 11:33:36

标签: java static

类似于 - 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;


 }

如果它太傻了,请原谅。

由于

3 个答案:

答案 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属性为静态。

所以它节省了内存