Static(静态):
1.static能够用在代码的什么地方:
- static修饰内部类;
- static修饰成员变量;
- static修饰静态块;
- static修饰方法;
public class Outer {
static class Inner{
}
public static double pi=3.14;
static {
System.out.println("我是静态块。");
}
public static void paint(){
}
public static void main(String[] args) {
Outer.Inner inner=new Outer.Inner();
System.out.println(Outer.pi);
Outer.paint();
}
}
2.static何时采用,何时不采用?
static修饰的成员变量在内存中只有一份值,当所要被修饰的成员变量不为一个时,不可以使用static来修饰,相反使用static来修饰十分方便;
3.加载顺序问题:
- 继承情况下,父亲的优先要高于子类的优先级
- 父亲的静态块高于子类的静态块;
- 父亲的构造函数高于子类的构造函数;
- 静态的要优先于非静态(存储在方法区,全局唯一性);
- 静态属性和静态块的初始化阶段优先级是一样的,执行顺序取决于书写顺序;
- 初始化块属于实例级别,每个实例都会调用一次,且优先级高于构造方法;
- 初始化块和实例变量的优先级一致,但是执行顺序取决于书写的位置顺序;