分析&回答 创建对象的方式 newInstance是实用类的加载机制,创建类是这个类必须已经加载过且已经连接。 new是直接创建一个类,创建类是不需要这个类加载过。 从JVM上理解: newInstance实际上是把new这个方式分解为两步,即,首先调用class的加载方法加载某个类,然后实例化。这样分步的好处是显而易见的。我们可以在调用class的静态加载方法forName时获得更好的灵活性,提供给了我们降耦的手段。 数据类型不同 new Instance: 弱类型 (GC是回收对象的限制条件很低,容易被回收)、低效率、只能调用无参构造。 new: 强类型(GC不会自动回收,只有所有的指向对象的引用被移除是才会被回收,若对象生命周期已经结束,但引用没有被移除,经常会出现内存溢出)、相对高效、能调用任何public构造。 反思&扩展 什么情况下我们会使用newInstance? 工厂模式经常使用newInstance来创建对象。 newInstance()是实现IOC、反射、面对接口编程 和 依赖倒置 等技术方法的必然选择,new 只能实现具体类的实例化,不适合于接口编程。 说说什么是强类型,什么是弱类型? 强类型:为所有变量指定数据类型称为“强类型”。 弱类型:就像javascript var 可以接受任何类型 强/弱类型是指类型检查的严格程度的。语言有无类型,弱类型和强类型三种。无类型的不检查,甚至不区分指令和数据。弱类型的检查很弱,仅能严格的区分指令和数据。强类型的则严格的在编译期进行检查。