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