一、静态变量
    1.静态变量使用static修饰
    2.静态变量属于类,可以被类及此类的所有对象访问。普通成员变量属于对象,不能被类直接访问
    3.静态变量存储在静态方法区,普通成员变量存储在堆区。
    4.静态变量随着类的初始化而初始化,普通成员变量随着对象的初始化而初始化。
    5.静态变量不被jvm回收,普通成员变量被jvm回收。

    6.静态变量可以被静态方法及普通成员方法访问,普通成员变量只能被普通成员方法访问。

二、静态方法
    1.静态方法使用static修饰的方法
    2.静态方法属于类,可以被类直接调用,普通成员方法属于对象,只能被对象调用。
    3.存储位置不同:静态方法在静态方法区,普通成员方法在普通方法区。
    4.静态方法只能访问静态变量,不能访问成员变量,普通成员方法都能访问,因为生命周期不同。
    5.静态方法随着类的初始化而初始化。普通成员方法,随着对象的初始化而初始化。

三、静态代码块

    1.随着类的初始化而初始化。

    2.只能访问静态变量。

    3.随着类的初始化,只执行一次。

四、静态内部类:如果一个类要被声明为static的,只有一种情况,就是静态内部类。

    静态内部类实际上与普通类(即类名必须与文件名一样的顶级类)一样,只是静态内部类在某一类的内部定义了而已,既然是类,要想使用就必须实例化。

    概念上与静态变量、静态方法是不一样的,不要被“静态”两个字迷惑了(不要以为凡是静态的东西就不需要实例化就可以直接使用,静态内部类是有区别),

    而且只有静态内部类,而没有静态类(顶级类)的概念