------- 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[]...等等