jvm的学习笔记:二、类的初始化,代码实战(3)

  • 首次主动此用导致类的初始化
    • 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");
    }
}

猜你喜欢

转载自www.cnblogs.com/boychen/p/11674833.html