package cn.sdut.reflectclass;
/*
* 反射第二步 : 九大内置的Class 实例 : JVM 中预先提供好的实例。
* int.class 不同于 Integer.class
* 表示数组的Class实例
*/
public class ReflectDemo02 {
public static void main(String[] args) {
/*JVM中预先提供好的Class实例分别是: byte,short,int,long,float,double,boolean,char,void
如何表示基本类型的字节码?
byte.class , short.class , int.class , long.class,
float.class , double.class , boolean.class , char.class,
void.class */
//int.class 不同于 Integer.class
Class clz1 = Integer.class;
Class clz2 = int.class;
System.out.println(clz1==clz2);//false
//但是 Integer中有个静态常量 TYPE返回的是int.class
Class clz3 = Integer.TYPE;
System.out.println(clz3);//int
System.out.println(clz3 == clz2);//true
//表示数组的Class 实例: 方式1-arr.getClass() 方式2: int[].class String[].class char[][].class等。。。
//同一个类的在 JVM中只存在一份字节码对象,同一维度和相同元素类型的数组,字节码对象相同。
int[] arr1 = new int[10];
int[] arr2 = new int[2];
int[][] arr3 = new int[5][];
Class arrClz1 = arr1.getClass();
Class arrClz2 = arr2.getClass();
// Class arrClz4 = int[].class;
Class arrClz3 = arr3.getClass();
System.out.println(arrClz1==arrClz2);//true
System.out.println(arrClz2==arrClz3);//false
}
}