static关键字修饰属性(类变量):
1、由类创建的所有对象都公用这一个属性
2、当其中一个对象对此属性进行修改的时候,会导致其他对象的此属性的内容调用随之更改
3、类变量是随着类的加载而加载的,而且独一份,存在内存的静态域中,要早于实例变量创建
4、因为类加载的时候类变量就加载了,所以可以通过“类.属性”进行调用;
而实例变量需要通过new才会在内存中创建出来,所以调用需要通过“对象.属性”进行调用
类变量的内存结构,其中nation为static修饰的类变量
static关键字修饰方法(类方法):
1、随着类的加载而加载,内存中独一份
2、可直接通过“类.方法名”调用
3、内部可以调用静态的属性或静态方法,不能调用非静态属性和方法。非静态方法可以调用静态属性和方法。这与类的加载生命周期创建前后顺序有关。非静态方法必须new才会在内存创建,而静态的方法会随着类的加载就创建出来。
4、静态的结构(static属性、方法、代码块、内部类)的生命周期要早于非静态结构,同时被回收也要晚于非静态结构。