只有對類進行主動引用,才會觸發其初始化方法,而除此之外的引用方式稱之為被動引用,不會觸發其初始化方法
這裡先定義乙個utils(名字隨便起的,不要見怪)作為被測試類
package day12;
/** * @author :weihuanwen
* @date :created in 2019/5/23 00:14
* @description :
* @version: 1.0
*/public class utils
/*** 定義靜態方法
*/public static void staticmethod()
/*** 定義成員方法
*/public void instancemethod()
}
package day12;
public class test01
}
utils類被載入!
package day12;
public class test01
}
utils類被載入!
執行了靜態方法!
package day12;
public class test01
}
utils類被載入!
package day12;
public class test01
}
utils類被載入!
package day12;
public class test01
}
utils類被載入!
package day12;
/** * 父類
*/public class superclass
}
package day12;
/** * 子類
*/public class subclass extends superclass
}
package day12;
public class test01
}
父類被載入!
子類被載入!
package day12;
public class mark
public static void main(string args)
}class referfirst
}class refersecond
}
標記類mark被載入!
除了以上七種情況外的都尊徐被動引用,這裡只介紹幾種被動引用
package day12;
/** * 父類
*/public class superclass
}
package day12;
/** * 子類
*/public class subclass extends superclass
}
package day12;
public class test01
}
父類被載入!
10
package day12;
public class test01
}
****常量在編譯階段會存入呼叫類的常量池中,本質沒有直接引用到定義的常量類中,因此不會觸發定義的常量類初始化
package day12;
public class person
}
package day12;
public class test01
}
無輸出結果 類初始化時機
虛擬機器規範中並沒有強制約束何時進行載入,但是規範嚴格規定了有且只有下列五種情況必須對類進行初始化 載入 驗證 準備都會隨之發生 以上 5 種場景中的行為稱為對乙個類進行主動引用。除此之外,所有引用類的方式都不會觸發初始化,稱為被動引用。被動引用的常見例子包括 system.out.println ...
類的初始化時機
什麼情況下需要開始類載入過程的第乙個階段 載入 虛擬機器規範中並沒強行約束,這點可以交給虛擬機器的的具體實現自由把握,但是對於初始化階段虛擬機器規範是嚴格規定了如下幾種情況,如果類未初始化會對類進行初始化。建立類的例項 訪問類的靜態變數 除常量 被final修辭的靜態變數 原因 常量一種特殊的變數,...
資源的初始化時機
zend framework 中的資源是什麼時候初始化的呢?還是直接上 來看比較有說服力 protected function bootstrap resource null foreach this getpluginresourcenames as resource elseif is stri...