package j2se_develop; /** * 反射类的基石-----Class类 * Java程序中的各个Java类属于同一类事物,描述这类事物的Java类名就是Class * Class:对应各个类在内存中的字节码 * 如何得到各个字节码对应的实例对象(Class类型) * 1,类名.class,如:System.class; * 2,对象.getClass();如:new Date().getClass(); * 3,Class.forName("类名"),如:Class.forName("java.util.Date"); * 九个预定义Class实例对象 * 1,八个基本数据类型(boolean,byte,char,short,int,long,folat,double) * 2,void;如:Class cla1=void.class; * 数组类型的Class实例对象 * Class.isArray(); * * 总之,只要是在源程序中出现的类型,都有各自的Class实例对象,例如:int[],void等等 * * @author wjw * */ public class FanShe { public static void main(String[] args)throws ClassNotFoundException { Class c=void.class; System.out.println(c); method(); } public static void method() throws ClassNotFoundException{ String str="aaaa"; Class cla1=str.getClass(); Class cla2=String.class; Class cla3=Class.forName("java.lang.String"); System.out.println(cla1==cla2);//返回true,说明这几种方式产生的字节码文件都是同一个 System.out.println(cla1==cla3);//返回true,说明这几种方式产生的字节码文件都是同一个 System.out.println(cla2==cla3);//返回true,说明这几种方式产生的字节码文件都是同一个 System.out.println("---------------------------------------------------"); System.out.println(cla1.isPrimitive());//返回false;判断该字节码是否是基本数据类型的字节码,String不是基本数据类型 System.out.println(int.class.isPrimitive());//返回true;判断int的字节码是否是基本数据类型的字节码 System.out.println(int.class==Integer.class);//返回false;基本数据类型的字节码和对应封装类型的字节码不一样 System.out.println(int.class==Integer.TYPE);//返回true;该Integer.TYPE封装了基本数据类型的字节码,所以一样 System.out.println(int[].class.isArray());//用isArray()判断 } }