●static
可以用来修饰的结构:属性,方法,代码块,内部类
变量的分类(按位置分) : 成员变量(属性) vs 局部变量
属性的分类 :对象属性(实例变量/实例属性) vs 类属性(类变量)
● static修饰属性(类属性)
1. 同一个类创建的多个对象,每个对象单独拥有一份实例变量,共同拥有一份类变量。
2. 同一个类多个对象中某个对象对类变量进行修改后,其它的对象看到的是修改后的值。
3. 类变量是随着类的加载而加载的(类加载加载一次)。实例变量是随着对象的创建而加载的。
4. 调用类变量的两种方式 : 类名.类变量名 对象名.类变量
●static修饰方法(静态方法/类方法)
1. 静态方法是随着类的加载而加载的。
2. 静态方法中不能调用实例变量和非静态方法 (原因 :因为加载时机不同。类加载的时候还没有对象)
3. 非静态方法(对象方法/非静态方法)中可以调用类变量和静态方法
4. 静态方法中不能使用"this"和"super"关键字
●使用场景
static修饰属性 :
1. 多个对象需共同拥有该属性时那么使用static修饰
2. 常量 : public static final double PI = 3.14159265358979323846;
static修饰方法:
1. 工具类中的方法都是静态方法
2. 有时为了调用类变量方法也会定义成静态方法。