您好,登錄后才能下訂單哦!
這篇文章主要講解了“java類的引用方法有哪些”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“java類的引用方法有哪些”吧!
1、類的主動引用,一定會發生類的初始化。當虛擬機啟動,先初始化main方法所在的類
實例化一個類的對象
調用類的靜態成員(除了final常量)和靜態方法
使用java.lang.reflect包的方法對類進行反射調用
當初始化一個類,如果其父類沒有被初始化,則先會初始化它的父類
2、類的被動引用,不會發生類的初始化
當訪問一個靜態域時,只有真正聲明這個域的類才會被初始化。如:當通過子類引用父類的靜態變量,不會導致子類初始化
通過數組定義類引用,不會觸發此類的初始化
引用常量不會觸發此類的初始化(常量在鏈接階段就存入調用類的常量池中了)
實例
package com.volcano.reflection; //什么時候會發生類的初始化,除了第一個注釋一直開著,其他都要獨立打開測試,否則不準確 public class TestReflection3 { static { //1.虛擬機啟動就會最先初始化main方法所在的類 會 System.out.println("main方法被加載"); } public static void main(String[] args) throws ClassNotFoundException { //2.實例化一個對象 會 //new Father(); //3.調用類的靜態成員(除了final常量)和靜態方法 會 //System.out.println(Son.a); //4.使用java.lang.reflect包的方法對類進行反射調用 會 //Class cls = Class.forName("com.volcano.reflection.Father"); //5.當初始化一個類,如果其父類沒有被初始化,則先會初始化它的父類 會 //new Son(); //6.當訪問一個靜態域時,只有真正聲明這個域的類才會被初始化 不會 //System.out.println(Father.a);//兩個都是只加載Father //System.out.println(Son.a);//因為a是Father的靜態成員 //7.通過數組定義類引用,不會觸發此類的初始化 不會 //Father[] fathers = new Father[10]; //8.引用常量不會觸發此類的初始化 不會 //System.out.println(Father.B); } } class Father{ static { System.out.println("Father被加載"); } static int a=100; static final int B = 300; } class Son extends Father{ static { System.out.println("Son被加載"); } static int c=200; }
感謝各位的閱讀,以上就是“java類的引用方法有哪些”的內容了,經過本文的學習后,相信大家對java類的引用方法有哪些這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。