- 首次主动此用导致类的初始化
- MyParent4 myParent4 = new MyParent4();
- MyParent4 myParent5 = new MyParent4();
- 输出:
- MyParent4 static block
- 依据:myParent5 new 对象的时候,并没有再次执行MyParent4的静态块。
- 初始化数组的时候,其类并没有导致被初始化
- MyParent4[] myParent4s = new MyParent4[1];
- 输出:
- 依据:new MyParent4[1]的时候,并没有执行MyParent4的静态块。
public class MyTest4 {
public static void main(String[] args) {
//首次主动此用导致类的初始化
MyParent4 myParent4 = new MyParent4();
System.out.println("--------");
//其次不会
MyParent4 myParent5 = new MyParent4();
//对于数组来说,其类型是由jvm在运行期动态生成的,表示为[Lcom.chen.jvm.classloader.MyParent4
//这种形式,动态生成的类型。其父类是object
//
// MyParent4[] myParent4s = new MyParent4[1];
// System.out.println(myParent4s.getClass());
// System.out.println(myParent4s.getClass().getSuperclass());
//
// MyParent4[][] myParent4s2 = new MyParent4[1][1];
// System.out.println(myParent4s2.getClass());
// System.out.println(myParent4s2.getClass().getSuperclass());
//
// System.out.println("----------");
// int[] i = new int[1];
// System.out.println(i.getClass());
// System.out.println(i.getClass().getSuperclass());
}
}
class MyParent4{
static {
System.out.println("MyParent4 static block");
}
}