黑马程序员—高新技术加强之透彻分析反射的基础_Class类

来源:互联网 发布:网络电视电话会议 编辑:程序博客网 时间:2024/05/04 21:54

------- <a href="http://www.itheima.com" target="blank">android培训</a>、<a href="http://www.itheima.com" target="blank">java培训</a>、期待与您交流! ---------



public class 透彻分析反射的基础_Class类 {


/**
*1.java的一个类用于描述一类事物的共性,该类事物有什么属性
*没有什么属性,至于这个属性的值是什么,则是由这个类的实例
*对象来确定的,不同势力对象有不同的属性。java程序中的各个
*java类。他们是否属于同一个事物,是不是可以用一类事物来描
*述这类事物呢?这个雷达名字就是Class。要注意与小写Class关
*键字的区别。Class类描述那些关键字的信息呢?类的名字,累的
*访问属性,雷梭属于的包名,字段名成都列表,方法名的列表
*,等等。学习反射,首先要明白Class这个类。
*/
/*一个类被加载器加载到内存中,占用一片存储空间,这个空间里
* 面的内容就是累的字节码,不同的类字节码是不同,所以它们在
* 内存中的字节码是不同的,这一个个克难攻坚可分为一个个对象
* 来表示,这些对象显然具有相同的类型。
* */
/*
* 如何得到各个字节码对应的对象(Class类型)
* 类名.clsss,例如System.class
* 对象.getClass(),例如,new Data().getClass();
* Class.forName("类名"),例如Class.forName("java.util.Date");
* */
/*九个预定义Class对象:
* 参看Class.isPrimitive方法的帮助。
* int.class==integer.TYPE
* 数组类型的Class实例对象
* Class.isArray();
* 总之,只要是在原程序中出现的类型,都有各自class实例对象。例如:int void。
* */
public static void main(String[] args)throws Exception {
String str1="abc";
Class cls1=str1.getClass();
Class cls2=String.class;
Class cls3=Class.forName("java.lang.String");
System.out.println(cls1==cls2);
System.out.println(cls1==cls3);


System.out.println(cls1.isPrimitive());
/*解释:为什么是false
 * Class<?> getComponentType()方法是Class中的方法,可以返回表示数组类型的Class。
boolean isPrimitive()用来判断指定的Class类是否为一个基本类型。
例:
String [] arr = new String[10];
String str = "";
System.out.println(arr.getClass()); // 数组的String 类
System.out.println(str.getClass()); // 非数组的String 类
System.out.println(arr.getClass().getComponentType()); // String类
System.out.println(str.getClass().getComponentType()); // 得到null值,因为str不是数组
System.out.println(arr.getClass().getComponentType().isPrimitive()); // 显示false,因为String 不是基本数据类型
如果程序改成:
int [] arr = new int[10];
System.out.println(arr.getClass().getComponentType().isPrimitive()); // 显示true,因为int是基本数据类型
 * */
System.out.println("int1"+int.class.isPrimitive());
//System.out.println("int2"+int.class==Integer.class);
//System.out.println("int3"+int.class==Integer.TYPE);
System.out.println("int4"+int[].class.isPrimitive());//不是原始类型。
System.out.println("int5"+int[].class.isArray());//判断数组用isArray()
}


}

------- <a href="http://www.itheima.com" target="blank">android培训</a>、<a href="http://www.itheima.com" target="blank">java培训</a>、期待与您交流! ---------


0 0