黑马程序员——反射类的基石-----Class类

时间:2022-02-27 19:57:35


                                          ----------------------     android培训      java培训   期待与您交流!    ----------------------   
                       

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()判断
	}
	
}

                                          ----------------------     android培训      java培训   期待与您交流!    ----------------------   
                         详细请查看       http://edu.csdn.net/heima