黑马程序员-反射的基础知识

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值