Java中静态变量和全局变量之间的区别

Use*_*ser -2 java

我是Java编程的新手.谁能说出Java中全局变量和局部变量之间的区别?

dSe*_*ien 21

Java编程语言中没有全局变量的概念.相反,有类和成员属性.类属性使用static关键字标记,这意味着可以在不进行实例化的情况下访问它们,而成员属性则绑定到类的实例.

小例子:

public class Person{
    public static final int TOTAL_PERSONS;

    private String firstname;
    private String lastname;

    public void setFirstname(String firstname){ ... }
    ...
}
Run Code Online (Sandbox Code Playgroud)

使用此类,我可以使用Person.TOTAL_PERSONS,但不能使用Person.firstname.要获取/设置名字(不提及您可能很快就会发现的getter/setter),首先需要创建该类的实例:

Person p = new Person();
p.setFirstname("foo");
Run Code Online (Sandbox Code Playgroud)

最后,请注意,可以创建其他语言称为全局变量的内容.例如,您可以使用Singleton模式,但无论如何,如果没有正当理由,不应使用全局变量:请查看此页面


Bri*_*new 5

你的问题有点困惑,因为你在标题中提到了静态/全局,在你的问题中提到了全局/本地。

static变量与一个类相关联每个类都有一个实例

类可以有成员变量,并且该类的每个实例都有一个实例

请注意,如果您有多个类加载器,这会进一步复杂化。在这种情况下,您可以加载多个类定义,因此可能加载多个静态变量。