尚學堂【官網】-西安Java培訓|c++培訓|Android培訓|安卓培訓|java視頻教程|軟件工程師|-西安雁塔尚學堂計算機學校
Java教程  尚學堂首頁Java學院Java教程

尚學堂Java基礎類的加載

www.zyopwk.live 發布人:java  |  來自:本站  |  發布時間:2017-10-26 11:03:31  |  點擊次數:1834

類加載有三種方式:

1、命令行啟動應用時候由JVM初始化加載

2、通過Class.forName()方法動態加載

3、通過ClassLoader.loadClass()方法動態加載

例子:

1
2
3
4
5
6
7
8
9
10
11
12
13
package com.neo.classloader;
public class loaderTest {
        public static void main(String[] args) throws ClassNotFoundException {
                ClassLoader loader = HelloWorld.class.getClassLoader();
                System.out.println(loader);
                //使用ClassLoader.loadClass()來加載類,不會執行初始化塊
                loader.loadClass("Test2");
                //使用Class.forName()來加載類,默認會執行初始化塊
//                Class.forName("Test2");
                //使用Class.forName()來加載類,并指定ClassLoader,初始化時不執行靜態塊
//                Class.forName("Test2", false, loader);
        }
}

demo類

1
2
3
4
5
public class Test2 {
        static {
                System.out.println("靜態初始化塊執行了!");
        }
}

分別切換加載方式,會有不同的輸出結果。

Class.forName()和ClassLoader.loadClass()區別

Class.forName():將類的.class文件加載到jvm中之外,還會對類進行解釋,執行類中的static塊;

ClassLoader.loadClass():只干一件事情,就是將.class文件加載到jvm中,不會執行static中的內容,只有在newInstance才會去執行static塊。

注:

Class.forName(name, initialize, loader)帶參函數也可控制是否加載static塊。并且只有調用了newInstance()方法采用調用構造函數,創建類的對象 。

 

當前文:尚學堂Java基礎類的加載
上一頁:西安Java培訓隊列線程安全操作
下一頁:尚學堂Java的JVM初始化步驟
在線報名(*為必填項)
云南快乐十分开奖走势图