在Java中有两种对象:Class对象和实例对象。

实例对象是类的实例,通常是通过new关键字构建的。

Class对象是JVM生成用来保存对象的类的信息的。

Java程序执行之前需要经过编译、加载、链接和初始化这几个阶段,编译阶段会将源码文件编译为.class字节码文件,编译器同时会在.class文件中生成Class对象;加载阶段通过JVM内部的类加载机制,将Class对象加载到内存中。

在创建对象实例之前,JVM会先检查Class对象是否在内存中存在,如果不存在,则加载Class对象,然后再创建对象实例,如果存在,则直接根据Class对象创建对象实例。

JVM中只有一个Class对象,但可以根据Class对象生成多个对象实例。