new Test()的过程基本等于:
Class clazz = Class.forName("Test");
clazz.newInstance();
第一步由类加载器查找类路径下的目标类,并加载类实例,对应到JVM就是加载到了方法区。
第二步类实例加载完成后生成对象实例,实例数据保存在JVM的Heap中。
new Clazz()可以直接由IDE检查类的存在, Class.forName只有到运行时才能知道类是否存在,所以经常用于需要反射
的基础设施代码。通过将类初始化过程拆成两步,可以像spring一样将需要加载的类名配到xml等配置文件中,再在初始化的
时候由框架代码将需要的类加载到类加载器中,这是new关键字无法做的。