static关键字
可以修饰成员变量和成员方法
1、特点
A、随着类的加载而加载,在学到类的加载的时候知道,程序在加载类的时候会把静态的变量和方法加载到方法区的静态区。
B、优先于对象存在,上面有说到,静态的变量和方法会随着类而加载,所以在没创建对象的时候就已经存在了。
C、被类的所有对象共享,就是类中成员变量被定义为静态,那么不论有多少个对象,静态成员变量只有一份内存拷贝,即所有对象共享该成员变量;它是属于整个类而不是属于某一个对象。
D、可以通过类名调用,不管是静态的成员变量还是静态的成员方法,都可以直接使用类名调用。当然也可以用对象调用。
E、生存周期,静态成员变量的作用域只在类内部,但其生命周期却贯穿整个程序。
F、静态变量应尽量初始化,没有初始化会有默认值。
2、注意事项
A、静态方法中没有this引用
B、静态方法只能访问静态成员变量和静态成员方法
3、静态变量和成员变量的区别
A、所属不同
静态变量属于类,所以也称为为类变量
成员变量属于对象,所以也称为实例变量(对象变量)
B、内存中位置不同
静态变量存储于方法区的静态区
成员变量存储于堆内存
C、内存出现时间不同
静态变量随着类的加载而加载,随着类的消失而消失
成员变量随着对象的创建而存在,随着对象的消失而消失
D、调用不同
静态变量可以通过类名调用,也可以通过对象调用
成员变量只能通过对象名调用