jvm虚拟机--jvm加载类的先后顺序

--java代码执行顺序

package com.bdqn.javascriptengine;
/**
 * 初始化类的先后顺序
 * @author OU
 *
 */
public class Demo01 {
     
    static {
        System.out.println("main 方法的静态代码块");
    }
     
  public static void main(String[] args) {
      System.out.println("main 的主方法"); 
     //主动引用
      A a=new A();
      System.out.println(a.length);
      //Class.forName("");
      //被动引用 ,不会初始化A类
      // A.MAX;
      //A[] a=new A[10];
      //不会初始化B类
      System.out.println(B.length);
  }
}

class B extends A{
   static{
       System.out.println("B 类的静态方法");
   }    
}

class A extends C{
    public static int length=100;
    public static final int MAX=200;
    
    static{
        System.out.println("A 类的静态代码块");
        length=300;
    }
    public static void test(){
        
        System.out.println("A 类的静态方法");
    }
}

class C{
    
    static{
        
        System.out.println("C 类的静态方法");
    }
    
    
    
}
demo1

package com.bdqn.javascriptengine;

public class Demo02 {
public static void main(String[] args) throws ClassNotFoundException {

    System.out.println(ClassLoader.getSystemClassLoader());
     
     System.out.println(ClassLoader.getSystemClassLoader().getParent());
     System.out.println(ClassLoader.getSystemClassLoader().getParent().getParent());
     //得到系统加载类的默认路径
     System.out.println(System.getProperty("java.class.path"));     
     ClassLoader classLoader=Class.forName("com.bdqn.javascriptengine.Student").getClassLoader();
          System.out.println(classLoader);
      /**
       * sun.misc.Launcher$AppClassLoader@4bea71d4
       * sun.misc.Launcher$ExtClassLoader@cd73c3c
       * D:workspace	estreflectionin
       */
}
}
demo2
原文地址:https://www.cnblogs.com/ou-pc/p/7172380.html