JVM核心機制_類加載全過程JAVA218-219

來源:http://www.bjsxt.com/
一、S02E218_01JVM核心機制_類加載全過程、JVM內存分析、反射機制核心原理、常量池理解
二、S02E219_01JVM核心機制_類加載全過程、初始化時機、類的主動引用和被動引用、靜態初始化塊執行順序問題

研究類加載全過程:有助於瞭解JVM運行過程,更深入瞭解java動態性,(解熱部署、動態加載),提高程序的靈活性。

類加載全過程

類加載全過程

類加載全過程

package com.test.classloader;

public class Demo01 {//先靜態初始化Object類
    static {
        System.out.println("靜態初始化Demo01");
    }
    //主動引用,main方法所在的類
    public static void main(String[] args) throws Exception {
//      System.out.println("Demo01的main方法");


        //主動引用,初始化類
//      A a = new A();//先靜態初始化A_Father,再靜態初始化A
//      System.out.println(A.width);//類只加載和初始化一次 
//      A a2 = new A();//類只加載和初始化一次
//      Class.forName("com.test.classloader.A");//反射

        //被動引用,不會初始化
//      System.out.println(A.MAX);//調用類的final常量,類不會被初始化
//      A[] as = new A[10];//數組
//      System.out.println(B.width);//定義屬性的類纔會被初始化
    }
}
class B extends A {
    static {
        System.out.println("靜態初始化B");
    }
}

class A extends A_Father {
    public static int width = 100;//靜態變量/靜態域/field
    public static final int MAX = 100;
    static {
        System.out.println("靜態初始化A");
        width = 300;
    }
    public A(){
        System.out.println("創建A類的對象");
    }
}

class A_Father {
    static {
        System.out.println("靜態初始化A_Father");
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章