static可以修饰成员变量、方法和代码块。静态的东西都是在类被加载时就被加载了的。
静态变量:
static不允许用来修饰局部变量。
当我们基于类创建类的对象时,每个对象都拥有自己的成员,互相独立。当我们想让所有的对象共享同一个成员时,可以用static修饰该成员。我们称之为静态变量,它被类的所有对象共享。
当且仅当类初次加载时会被初始化,在内存中只存在一个副本,被所有对象共享。
静态方法:
在静态方法中不能访问类的非静态成员变量和非静态成员方法。
静态属性与静态方法在类加载时不依赖对象,也就没有this,通过类名就可访问,当然也可通过对象访问。
静态代码块:
静态代码块可以优化程序性能,static块可以置于类的任何地方(除了方法的内部),类中可以有多个static块。在类初次被加载时按照static块的顺序执行每个static块,并且只会执行一次。