黑馬程序員-反射的基礎知識

------- android培訓java培訓、期待與您交流! ----------


java中的類是用來描述一些事物的共性,而java中的類與類之間也是用共性的,那麼來描述java類的共性的類就是Class類。Class中包含類的名稱、類的屬性、類所屬的包、字段名稱、方法列表等等信息。Class類是反射的基礎,所以先要對它進行了解及掌握。

Class的實例化對象代表了java類在內存中的字節碼,下邊是創建各個java類字節碼有三種方式:

1、類名.class	例如 Person.class
2、對象.getClass()		例如 new String().getClass()
3、Class.forName("類名")	例如 Class.forName("java.lang.String")		//返回String類的字節碼,如果java虛擬機存在就不用加載了,直接返回String的字節碼;如果沒有則加載,並緩存到java虛擬機中


有九個java預定義好的字節碼,用到的時候會直接返回不會再重新加載了:

包括八個基本數據類型對象(boolean、byte、char、short、int、long、float和double)和一個void對象


Class的例子:

String str1 = "abc";
Class cls1 = String.class;
Class cls2 = str1.getClass();
Class cls3 = Class.forName("java.lang.String");

System.out.println(cls1 == cls2);		//打印結果爲true,如果此類的字節碼存在就不會在從新加載,直接返回
System.out.println(cls2 == cls3);		//打印結果爲true,如果此類的字節碼存在就不會在從新加載,直接返回
	
System.out.println(cls1.isPrimitive());		//是否是基本數據類型
System.out.println(int.class.isPrimitive());		//是否是基本數據類型
System.out.println(int.class == Integer.class);		//打印結果爲false,Integer和int是兩個不一樣的類
System.out.println(int.class == Integer.TYPE);		//打印結果爲true,表示Integer包裝類所包裝的基本類型的字節碼
System.out.println(int[].class.isArray());		//是否爲數組類型的字節碼

總之,只要在java程序中出現的類型,都有各自的Class的實例化對象(字節碼),例如int,Person,String[]...等等

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章