反射就是对一个类进行解剖,把一个类中的各种成分映射成一个类
java程序执行字节码文件的过程
1启动jvm进程
2把所有相关的字节码加入内存(类加载器)
3.系统为每个字节码生成一个class对象
4初始化(静态代码块)
5静态成员变量
得到一个类的Class对象的三种方法
1:类名.class;
2:该类的一个实例.getClass();
3:Class.forName("该类在当前包下的路径");
public class Demo01 {
public static void main(String[] args) throws ClassNotFoundException {
Student st=new Student();
Class c2=Student.class;
Class c3 =st.getClass();
Class c4=Class.forName("com.part1.Student");
System.out.println(c2==c3);
System.out.println(c4==c3);
//对于基本类型和包装器类型
Integer i=120;
Class c5=Integer.class;
Class c6=i.getClass();
System.out.println(c5==c6);
Class c7=int.class;
System.out.println(c5==c7);
Class c8=Integer.TYPE;
System.out.println(c7==c8);
}
}
true
true
true
false
true
注:基本数据类型和对应的包装器类型得到的不是同一个class对象
但是包装器类型.Type返回的却是基本数据类型的对象