八.Java中的初始化顺序

1.//!!!在加载类的过程中为静态变量分配内存,实例变量在创建对象时分配内存!!!//

2.初始化顺序

  1.父类优于子类

  2.创建对象前:static{}/static/static修饰的方法,变量随类加载
     |
  3.创建对象时:代码块/实例化属性->构造器

  4.同样的情况下:同时代码块或同是静态修饰时,是要看它们的语句顺序了

class a{
    static{
        System.out.println("a static");
    }
    {
        System.out.println("a loading");
    }
    a(){
        System.out.println("a create");
    }
}
class b extends a{
    static{
        System.out.println("b static");
    }
    {
        System.out.println("b loding");
    }
    b(){
        System.out.println("b create");
    }
}
public class Test3{
    public static void main(String[] args) {
        new b();
    }
}

3.一个考虑:创建对象时先有对象还是先创建内存

4.隐式赋值在new的时候

5.显式赋值在super之后

6.子类中非静态属性的显示赋值是在父类构造器执行完之后和子类中的匿名代码块执行之前的时候

 

猜你喜欢

转载自www.cnblogs.com/Magic-Li/p/12799393.html