(1)前者仅仅返回Class对象,后者实例化了哪个Class对象所对应的类;注意“Class对象”这一说法,对于源代码而言,“类”是对象的模板,但对于JVM而言,“类”同样是一个需要维护的对象。
因为Java虚拟机需要维护自己已经加载了那些类,这些类都是从那些class文件加载进来的,这些类都有那些方法可供调用,都有那些构造函数可以用来初始化对象,等等等等,——当然也需要面向对象的方法来维护这些类啊。
(2)如果一个类通过使用静态初始化能完成所需要的几乎所有功能,你不需要使用到它的任何实例,因为JVM在加载一个类的时候就会初始化所有静态成员,并执行静态初始化块。所以你只需要使用Class.forName显式的加载这个类,就可以使用那些功能了。
因为Java虚拟机需要维护自己已经加载了那些类,这些类都是从那些class文件加载进来的,这些类都有那些方法可供调用,都有那些构造函数可以用来初始化对象,等等等等,——当然也需要面向对象的方法来维护这些类啊。
(2)如果一个类通过使用静态初始化能完成所需要的几乎所有功能,你不需要使用到它的任何实例,因为JVM在加载一个类的时候就会初始化所有静态成员,并执行静态初始化块。所以你只需要使用Class.forName显式的加载这个类,就可以使用那些功能了。
生成的对象实例都可以不用保持引用 。