刷题刷出新高度,偷偷领先!偷偷领先!偷偷领先! 关注我们,悄悄成为最优秀的自己!
面试题
说说newInstance 和 new 有什么区别
使用微信搜索喵呜刷题,轻松应对面试!
答案:
分析&回答
创建对象的方式
- newInstance是实用类的加载机制,创建类是这个类必须已经加载过且已经连接。
- new是直接创建一个类,创建类是不需要这个类加载过。
从JVM上理解: newInstance实际上是把new这个方式分解为两步,即,首先调用class的加载方法加载某个类,然后实例化。这样分步的好处是显而易见的。我们可以在调用class的静态加载方法forName时获得更好的灵活性,提供给了我们降耦的手段。
数据类型不同
- new Instance: 弱类型 (GC是回收对象的限制条件很低,容易被回收)、低效率、只能调用无参构造。
- new: 强类型(GC不会自动回收,只有所有的指向对象的引用被移除是才会被回收,若对象生命周期已经结束,但引用没有被移除,经常会出现内存溢出)、相对高效、能调用任何public构造。
反思&扩展
什么情况下我们会使用newInstance?
- 工厂模式经常使用newInstance来创建对象。
- newInstance()是实现IOC、反射、面对接口编程 和 依赖倒置 等技术方法的必然选择,new 只能实现具体类的实例化,不适合于接口编程。
说说什么是强类型,什么是弱类型?
- 强类型:为所有变量指定数据类型称为“强类型”。
- 弱类型:就像javascript var 可以接受任何类型
- 强/弱类型是指类型检查的严格程度的。语言有无类型,弱类型和强类型三种。无类型的不检查,甚至不区分指令和数据。弱类型的检查很弱,仅能严格的区分指令和数据。强类型的则严格的在编译期进行检查。
创作类型:
原创
本文链接:说说newInstance 和 new 有什么区别
版权声明:本站点所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明文章出处。让学习像火箭一样快速,微信扫码,获取考试解析、体验刷题服务,开启你的学习加速器!



