用一个例子来说明:
一、1、新建一个类stu,它有一个属性age:
public class stu {
int age;
}
2、再新建一个测试类stuTest:
public class stuTest {
public static void main(String[] args) {
stu s1 = new stu();
s1.age = 10;
stu s2 = new stu();
s2.age = 20;
//此时输出的结果为s1=10,s2=20
System.out.println("s1="+s1.age);
System.out.println("s2="+s2.age);
}
}
二、1、修改stu类,把属性age修改为static静态属性:
public class stu {
static int age;
}
2、此时再测试,运行结果为s1=20,s2=20
总结:由此可见,静态变量被所有的对象所共享,在内存中只有一个副本,它当且仅当在类初次加载时会被初始化。而非静态变量是对象所拥有的,在创建对象的时候被初始化,存在多个副本,各个对象拥有的副本互不影响。
static成员变量的初始化顺序按照定义的顺序进行初始化。