美团面试题解析:new Integer(“127“)和Integer.valueOf(“128“) 的底层 ...

打印 上一主题 下一主题

主题 1009|帖子 1009|积分 3027

弁言

在Java面试中,包装类的底层实现细节是高频考点。其中,Integer类的对象创建方式及其缓存机制是经典问题之一。本文通过一道美团真题(new Integer("127")和Integer.valueOf("128")的区别),深入剖析其底层原理,帮助开发者避免实际开发中的隐蔽Bug,并征服面试官!
<hr> 1. 问题背景

面试原题
  1. Integer a = new Integer("127");  
  2. Integer b = Integer.valueOf("128");  
  3. System.out.println(a == b);  // 输出什么?为什么?  
复制代码
答案速览


  • 输出结果为 false
  • 核心原因:两者的对象创建机制不同,且涉及Integer的缓存池(-128~127)。
<hr> 2. 底层原理剖析

2.1 new Integer():逼迫创建新对象



  • 行为特点
         
    • 无论值是否在缓存范围内,每次调用new Integer()都会在堆内存中创建一个全新的Integer对象。
         
    • 示例验证
      1. Integer x = new Integer("127");
      复制代码



免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

王柳

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表