static可以修饰:变量,方法,代码块,类
(1)静态变量:
静态变量是属于类的,存放在方法区,是线程共享的
实例变量属于实例的,变量放在堆上,引用放在当前线程栈上,是线程私有的
(2)静态方法:
静态方法是在类加载的时候加载到内存.(所以静态方法中只能使用外部的静态变量,调用的方法也只能是静态方法,否则编译不通过)
非静态方法是在类实例化的时候才被加载到内存.
静态方法可以通过类名直接调用,非静态的方法需要实例化后再调用.
静态方法不能被重写,子类中跟父类签名相同的方法我们称之为隐藏
(3)静态代码块:
类中的静态代码块也是在类加载的时候执行,常用来做类的初始化工作
(4)内部静态类:
静态内部类是定义在类里面,用static修饰的类,在静态内部类里面只能访问外部类的静态属性跟静态方法