每一个类都有一个class对象,如果说类是对对象的抽象,那class类就是对类的抽象。Class类没有公共的构造方法,它是在类加载的时候由jvm通过类加载器中的defineClass方法自动构造的
类加载的三个阶段
加载:classloader 通过类的完全限定名去获取类的字节码二进制字节流文件,在堆中生成一个代表这个类的Class对象
链接:校验字节码文件是否符合jvm要求,为静态域分配存储空间,并为类变量设置初值默认为0。
初始化:开始执行java代码,执行该类的静态初始器和静态初始块,如果该类有父类,优先对父类进行初始化
所有的类都是在对其第一次使用时,动态加载到jvm中(懒加载)。