反射:反射是一种获取class类具体信息的一种过程
获取class的几种反射方式:
1. Class cl = Person.class 通过类.class获得
2. Class cl = person.getClass(); 通过对象获得 或者 .getSuperClass 即为person的父类
3. Class cl = Class.forName("com.example.Person") 通过包名获得
4. Class cl = Integer.TYPE 通过内置类型的包装类获取
类的引用: 主动引用(一定会发生类的初始化):
1. 当虚拟机启动,先初始化Main方法里面的类
2. new 一个类对象的时候
3. 调用一个类的静态成员和静态方法的时候
4. 使用java.lang.reflect包的方法对类进行反射调用的时候
5. 初始化一个类的时候,这个类有父类,会先初始化它的父类
被动引用(不会发生类的初始化):
1. 当访问一个静态域的时候,只有真正声明这个静态域的类才会被初始化
2. 通过数组定义的类引用,不会触发类的初始化
3.引用类里面的常量不会触发类的初始化,因为常量在链接阶段就已经存入了
调用类的常量池中



