静态变量和全局变量(Java)之间有什么区别?

时间:2013-10-21 14:18:58

标签: java variables

我对静态变量和全局变量之间的区别感到困惑。当我今天浏览Java教科书时,我的眼睛被“变量声明为静态的变量本质上是全局变量。当声明一个对象时,不会产生静态变量的副本。”我很清楚为什么静态变量被其类中的所有对象共享,但我不明白为什么静态变量是全局变量。根据我的理解,静态变量只能在其类中被视为“全局”。

5 个答案:

答案 0 :(得分:5)

可以(并且应该)使用Class.Variable访问静态变量。

如果静态变量为public,则全局可用。

public class MyClass {
 public static int X = 5;
}

可以使用

在课程的任何地方访问

MyClass.X

没有实际的“全球”关键字或任何内容,但它与其意图接近。

答案 1 :(得分:0)

我认为你的书(错误地)使用全局作为描述与类相关的变量的更简单方法。

例如,参加这个课程:

public class Apple {
    private static int numberOfApples = 0;

    public Apple() {
        numberOfApples++;
        System.out.println(numberOfApples);
    }
}

每次创建Apple时,它都会增加numberOfApples变量并将其打印出来。如果您创建两个Apple对象,则会打印:

1
2

在这种情况下,静态变量由所有Apple实例全局共享,这可能是它的意思,但这是因为它与类绑定。这与其他语言的全局变量不同。

编辑:正如其他人所提到的,您可以访问静态变量,而无需任何类的实例化。如果我在创建任何Apple实例之前将numberOfApples公开并打印出来,那么它将打印0.同样,在创建两个Apple类然后同时销毁这两个对象之后,我可以打印numberOfApples它会说2。

答案 2 :(得分:0)

静态:只存在一个具有该名称的变量。 (虽然每个实例都存在实例变量)

全球:静态和可见性是公开的。

因此,每个全局变量必须是静态的。

全局变量的示例是:java.lang.System.out

答案 3 :(得分:0)

  

静态变量和全局变量(Java)之间有什么区别?

不同之处在于Java中不存在全局变量。你的书甚至都不应该提到它们。

答案 4 :(得分:0)

据我所知,内存是由在main中声明的对象分配的,它调用方法。如果它调用非静态变量,则每次调用它时都会初始化它。另一方面,内存只为静态变量分配一次,只要它被调用,它的值保持不变。