当我编写一个类是,其实就是在描述对象的属性和行为,而并没有产生实质上的对象,只有通过new关键字才会产生出对象,这时系统次才会分配内存给对象,其方法才可以供外部调用。我们有时候希望无论是够产生了对象或无论产生了多少对象的情况下,某些特定的数据在内存空间里只有一份,例如所有的中国人都有个公家名称,每一个中国人都共享这个国家名称,不必在每一个中国人的实例对象中都有单独分配一个用于代表国家名称的变量。
static 修饰属性(类变量):
1.由类创建的所有对象,都共用这一属性。
2.当其中一个对象对此属性进行修改,会导致其他对象对此属性的一个调用。vs 实例变量(非static修饰的属性,各个对象各自拥有一套副本。
3.类变量是随着类的加载而加载的。而且独一份。
4.静态的变量可以通过"类.变量“的形式来调用。
5.类变量的加载是早于对象。
6.静态的变量存在于静态域中。
static 修饰方法(类方法):
1.随着类的加载而加载,在内存中也是独一份。
2.可以直接通过”类.类方法“的方式调用。
3.静态方法只能调用本类中其他的静态属性,或者说本类中其他的静态方法。
注:静态的结构(static的属性、方法、代码块、内部类)的生命周期也要晚于非静态