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

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

您的问题有点困惑,因为您在标题中引用了static / global,在您的问题中引用了global / local。

static变量绑定到一个每个类将有一个实例

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

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

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

小例子:

 public class Person{ public static final int TOTAL_PERSONS; private String firstname; private String lastname; public void setFirstname(String firstname){ ... } ... } 

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

 Person p = new Person(); p.setFirstname("foo"); 

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

除了其他(好的)答案:

 public class Person{ public static final int TOTAL_PERSONS = 100; public static int numberOfLegs = 2; private String firstname; private String lastname; public void setFirstname(String firstname){ ... } ... } 

编写以下代码:

 Person foo = new Person(); foo.setFirstname("foo"); Person bar = new Person(); bar.setFirstname("bar"); // At this point foo and bar have different firstname, and both have 2 legs Person.numberOfLegs = 4; // At this point foo and bar have different firstname, and they both got a pair of 2 extra (bionic) legs // Person.TOTAL_PERSONS is a 'constant' and has an unmodifiable value of 100 

请注意,这是示例代码,不应被视为良好实践,也不应被视为有意义。 ;)

全局变量和静态变量非常相似。 唯一的区别是静态变量可以是公共的或私有的。 公共静态变量是java中的全局变量。

局部变量特定于方法或类。它们的范围仅限于指定的方法或类。

有两种类型的方法。 它们是class methodsobject methodsClass methods用关键字static标识。 任何没有关键字staticobject method都称为object method 。 可以应用于方法变量