我是Java编程的新手。谁能说出Java中全局变量和局部变量之间有什么区别呢?
答案 0 :(得分:18)
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模式,但无论如何,如果没有正当理由,不应使用全局变量:check this page
答案 1 :(得分:4)
您的问题有点困惑,因为您在标题中引用了static / global,在您的问题中引用了global / local。
static
变量与类相关联,每个类一个实例。
类可以包含成员变量,并且该类的每个实例都有一个实例。
请注意,如果您有多个类加载器,这会更复杂。在这种情况下,您可以加载多个类定义,因此可以加载多个静态变量。
答案 2 :(得分:1)
除了其他(好)答案:
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
请注意,这是示例代码,不应被视为良好做法,也不应被视为有意义。 ;)
答案 3 :(得分:0)
全局变量和静态变量非常相似。唯一的区别是静态的 变量可以是公共的或私有的。公共静态变量是java中的全局变量。
局部变量特定于方法或类。它的范围仅限于指定的方法或类。
答案 4 :(得分:-3)
有两种方法。它们是class methods
和object methods
。 Class methods
标识为关键字static
。任何没有关键字static
的方法都称为object method
。可以将应用于方法或应用于变量。