弁言
在Java面试中,包装类的底层实现细节是高频考点。其中,Integer类的对象创建方式及其缓存机制是经典问题之一。本文通过一道美团真题(new Integer("127")和Integer.valueOf("128")的区别),深入剖析其底层原理,帮助开发者避免实际开发中的隐蔽Bug,并征服面试官!
<hr> 1. 问题背景
面试原题:
- Integer a = new Integer("127");
- Integer b = Integer.valueOf("128");
- System.out.println(a == b); // 输出什么?为什么?
复制代码 答案速览:
- 输出结果为 false
- 核心原因:两者的对象创建机制不同,且涉及Integer的缓存池(-128~127)。
<hr> 2. 底层原理剖析
2.1 new Integer():逼迫创建新对象
- 行为特点:
- 无论值是否在缓存范围内,每次调用new Integer()都会在堆内存中创建一个全新的Integer对象。
- 示例验证:
- Integer x = new Integer("127");
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |