你说的显示初始化就是形如:
private String name = "zhangsan";
这样的,就叫显示初始化。
还有就是你说的应该是初始化顺序那块的东西, 关于包含静态代码块的类,初始化相关可以概括为以下内容[size=14.666666984558105px]1)static代码块:静态代码块。 静态代码块的作用也是完成一些初始化工作。首先执行静态代码块,然后执行构造方法。静态代码 块在类被加载的时候执行,而构造方法是在生成对象的时候执行;要想调用某个类来生成对象,首先需要将类加载到Java 虚拟 机上( JVM),然后由JVM 加载这个类来生成对象。
2)类的静态代码块只会执行一次,是在类被加载的时候执行的,因为每个类只会被加载一次,所以静态代码块也只会被执行一次 而构造方法则不然,每次生成一个对象的时候都会调用类的构造方法,所以 new 一次就会调用构造方法一次。
3)如果继承体系中既有构造方法,又有静态代码块,那么首先执行最顶层的类的静态代码块,一直执行到最底层类的静态代码块 然后再去执行最顶层类的构造方法,一直执行到最底层类的构造方法。 注意:静态代码块只会执行
一次。
类加载初始化顺序,根据毕老师基础视频总结如下:
Person p = new Person(“zhangsan”,20);
类加载----静态代码块----在堆内存中开辟空间分配内存地址----在堆内存中建立对象的特有属性并进行默认初始化----对属性进行显示初始化----对对象构造代码块初始化---对对象对应的构造函数初始化---讲内存地址赋值给栈内存中的p变量。
|