static关键字使用总结
static修饰字段
static修饰属性表示该属性是静态属性(静态变量),类属性(类变量)。
静态属性由该类的所有实例所共享,属于类本身,可用类名.属性名直接访问
静态属性先于类的实例而存在。静态属性在类的初始化过程中就被创建了,且被保存在了全局数据区的静态区。
静态属性的继承问题:在包可见性允许的情况下,子类可以继承父类的静态属性。
ps:静态属性在类被加载时候会给分配一块内存,是在类加载时被创建并进行初始化,类加载的过程只进行一次。也就是类变量只会被创建一次。
static修饰方法
static修饰的方法称为静态方法。由所有的类实例所共享,属于类本身,可用类名.方法
静态方法的继承问题:在包可见性允许的情况下,子类可以继承父类的静态方法
ps:静态方法常驻内存,实例方法不是,所以静态方法效率高但占内存。
static修饰代码块
会在类被加载的时候执行且仅会被执行一次(跟类在虚拟机的生命周期一致)
优先于其它左右的代码执行,如果有多个static修饰的代码块,或者static的属性,就按照代码顺序执行
static修饰类(静态内部类)
静态内部类没有外部对象的引用,所以它无法获得外部对象的资源,当然好处是,静态内部类无需依赖于外部类,它可以独立于外部对象而存在。