static这个为非访问修饰符中的一个:被它修饰的变量、方法、代码块,称为静态变量、静态方法、静态代码块。
1.静态变量:被 static 修饰的变量称为静态变量,也叫类变量。静态变量属于类,而不是属于类的实例对象。静态变量在内存中只有一份拷贝,被所有该类的对象共享。
2.静态方法:被 static 修饰的方法称为静态方法。静态方法可以直接通过类名来调用,而无需创建类的实例对象。静态方法中只能访问静态变量和调用静态方法,不能直接访问非静态成员。
3.静态代码块:使用 static 修饰的代码块称为静态代码块。静态代码块在类被加载的时候执行,并且只会执行一次。静态代码块经常用于进行类的初始化操作。
补充:如果只想调用一次相关的变量你可以直接将变量设置为public static final + 基本数据类型 + 变量名 = 赋值;这样类不会进行加载,也可以调用相关的变量。
普通方法可以调用静态变量、静态方法。
静态变量在类的所有实例对象之间共享,可以通过类名直接访问。
静态方法在调用时无需创建对象,可以通过类名直接调用。
静态方法和变量是无法被继承的,因为它不是通过实例对象进行访问,是通过类加载而生成的。
静态代码块和属性的优先级高于普通代码块的优先级。如果有一个继承关系则运行的顺序应该是:
1.父类的静态方法和代码块
2.子类的静态方法和代码块
3.父类的普通方法和代码块
4.父类的构造器
5.子类的普通方法和代码块
6.子类的构造器