71.反射-九大內(nèi)置Class實例和數(shù)組的Class實例

由來:

基本數(shù)據(jù)類型不能表示為對象,也就不能使用getClass的方式,基本類型就沒有類名的概念,也不能使用Class.forName的方式,引入內(nèi)置Class實例和數(shù)組實例就是為了解決該問題.

所有的數(shù)據(jù)類型都有class屬性

九大內(nèi)置Class實例:

JVM中預(yù)先提供好的Class實例,分別是:byte,short,int,long,float,double,boolean,char,void.

表示:byte.class short.class int.class ...void.class

public class BaseConstructorDemo {
    public static void main(String[] args) {
        
        //Class<Integer> clz = int.class; 因為泛型只接收對象,不接收基本數(shù)據(jù)類型,所以需要放 Integer進去
        Class byteClass = byte.class;
        System.out.println(byteClass);
        Class shortClass = short.class;
        System.out.println(shortClass);
        Class intClass = int.class;
        System.out.println(intClass);
        Class longClass = long.class;
        System.out.println(longClass);
        Class floatClass = float.class;
        System.out.println(floatClass);
        Class doubleClass = double.class;
        System.out.println(doubleClass);
        Class charClass = char.class;
        System.out.println(charClass);
        Class boolClass = boolean.class;
        System.out.println(boolClass);
        Class voidClass = void.class;
        System.out.println(voidClass);
    }
}

在8大基本數(shù)據(jù)類型的包裝類中,都有一個常量TYPE,用于返回該包裝類對應(yīng)基本數(shù)類的字節(jié)碼對象.

System.out.println(Integer.TYPE == int.class);//true

System.out.println(Integer.class == int.class);//false

數(shù)組的Class實例:

數(shù)組是引用數(shù)據(jù)類型,數(shù)組其實是對象.
如何來表示數(shù)組的Class實例?

方式1:數(shù)據(jù)類型.class;

方式2:數(shù)組對象.getClass();

++注意:所有的具有相同的維數(shù)和相同元素類型的數(shù)組共享同一份字節(jié)碼對象,和元素沒有任何關(guān)系.++


Class和Object的區(qū)別

Class:

描述所有的類型,所以Class類中應(yīng)該具有所有類型的相同的方法.

Object:

描述所有的對象,所以在Object類中應(yīng)該具有所有對象的共同的方法.

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容