1.什么是静态变量?
静态变量又称为类变量,在类中被static修饰的成员变量属性,在类加载过程的准备阶段会进行一次赋值,一般是空值或constantValue属性值,且只有一次初始化时赋值,一份该变量,所有“该”对象共用这一个变量,其中“该对象”指的是所有包含该静态变量的对象类,即如下代码,其中“name”变量被static修饰,为静态变量,相当于所有new 出来的Person对象的name都为“老弯”,若其发生改变则所有Person对象的“name”值都一起发生改变。
扩展:被static修饰的方法为静态方法,其中static修饰的方法中不能使用this关键字,在JVM中static方法在静态区,静态方法中不能直接调用非静态方法,因为静态方法先加载;只能通过实例化对象后,通过对象引用调用。
public class Person {
private static String name = "老弯";
public static void test(){
System.out.println("这是一个静态方法");
}
}
被static修饰过的属性和方法可以直接通过类名调用,如:
String name = Person.name; //静态方法调用为:Person.test();
2.什么是全局变量?
全局变量又称为实例变量,即在类中,方法之外声明的普通变量,没有被static修饰,在创建对象时会默认调用实例构造器进行一次赋值,自动赋值为null或者为0。因此无论是类变量还是实例变量,在使用前都是非空的。如:
public class Person {
private String name;
}
其中name就是全局变量(实例变量)。
3.什么是局部变量?
局部变量即为方法内部的变量,只能在当前方法内被调用和使用,在其他方法内是无法使用到该变量。且局部变量没有初始化过程,在使用前必须赋值,否则报错空指针。如:
public class Person {
public void test(){
String name = "老弯";
}
}
其中name就是局部变量。