美团面试题:new Integer(“127“)和Integer.valueOf(“128“)有什么

news2024/9/20 5:40:13

在这里插入图片描述

🍅 作者简介:哪吒,CSDN2021博客之星亚军🏆、新星计划导师✌、博客专家💪

🍅 哪吒多年工作总结:Java学习路线总结,搬砖工逆袭Java架构师

🍅 技术交流:定期更新Java硬核干货,不定期送书活动

🍅 关注公众号【哪吒编程】,回复 1024 ,获取《10万字208道Java经典面试题总结(附答案)》2024修订版pdf,背题更方便,一文在手,面试我有

目录

    • 一、new Integer("127")
    • 二、Integer.valueOf("128")
    • 三、主要区别
      • 1、对象创建
      • 2、缓存使用
      • 3、性能和内存:
      • 4、值的考虑:
    • 四、对比示例
    • 五、为什么说Integer.valueOf("128") 也不使用缓存,是因为超出了范围?
      • 1、Integer 缓存是什么?
      • 2、为什么是 -128 到 127?
      • 3、为什么 128 不在缓存中?
      • 4、代码示例
      • 5、可以改变缓存范围吗?
      • 6、Integer对象比较
    • 六、结论

听到这个问题的一瞬间,我的第一反应是:“口误吧?127和128肯定不一样啊~”,哈哈,你的呢?

其实这是一道大厂经典面试题,它触及了 Java 中 Integer 对象的创建和缓存机制的一个微妙之处。

一、new Integer(“127”)

  1. 总是在堆内存中创建一个新的 Integer 对象。
  2. 值为 127。
  3. 不使用整数缓存池。

二、Integer.valueOf(“128”)

  1. 创建一个新的 Integer 对象,值为 128。
  2. 不使用整数缓存池,因为 128 超出了默认缓存范围。

三、主要区别

1、对象创建

两种方式在这个例子中都会创建新对象。

2、缓存使用

new Integer(“127”) 不使用缓存。

Integer.valueOf(“128”) 也不使用缓存,但原因不同(超出范围)。

3、性能和内存:

在这个特定例子中,两者的性能和内存使用基本相同。

4、值的考虑:

127 在缓存范围内,但 new 关键字绕过了缓存。

128 超出缓存范围,所以 valueOf 方法会创建新对象。

四、对比示例

Integer a = new Integer("127");
Integer b = new Integer("127");
System.out.println(a == b);  // false

Integer c = Integer.valueOf("127");
Integer d = Integer.valueOf("127");
System.out.println(c == d);  // true

Integer e = Integer.valueOf("128");
Integer f = Integer.valueOf("128");
System.out.println(e == f);  // false

五、为什么说Integer.valueOf(“128”) 也不使用缓存,是因为超出了范围?

1、Integer 缓存是什么?

Java 的 Integer 类维护了一个内部缓存,用于存储经常使用的整数值。这个缓存就像一个预先准备好的数字集合。

默认情况下,这个缓存包含了 -128 到 127 之间的所有整数。

这个范围是经过 Java 开发者仔细考虑后选定的,因为这个范围内的数字在日常编程中使用频率最高。

2、为什么是 -128 到 127?

  1. 字节范围: 这个范围恰好对应一个字节(byte)可以表示的整数范围。
  2. 常用数字: 大多数日常计算和循环中使用的小整数都在这个范围内。
  3. 内存权衡: 缓存范围不能太大,否则会占用过多内存。

3、为什么 128 不在缓存中?

128 刚好超出了这个预定义的范围。

当你调用 Integer.valueOf(“128”) 时,Java 会检查这个数字是否在缓存范围内。

发现 128 超出范围后,Java 就会创建一个新的 Integer 对象,而不是使用缓存。

4、代码示例

Integer a = Integer.valueOf("127"); // 使用缓存
Integer b = Integer.valueOf("127"); // 使用缓存
System.out.println(a == b); // 输出 true,因为是同一个缓存对象

Integer c = Integer.valueOf("128"); // 不使用缓存,创建新对象
Integer d = Integer.valueOf("128"); // 不使用缓存,再次创建新对象
System.out.println(c == d); // 输出 false,因为是两个不同的对象

5、可以改变缓存范围吗?

是的,可以通过 JVM 参数 -XX:AutoBoxCacheMax= 来增加上限。

但是,下限 -128 是固定的,不能改变。

6、Integer对象比较

不要依赖于缓存机制来比较整数对象。

始终使用 .equals() 方法来比较 Integer 对象的值。

六、结论

虽然在给定的例子中(“127” 和 “128”),两种方法都会创建新对象,但它们的行为原因不同:

new Integer(“127”) 总是创建新对象,无论值是多少。

Integer.valueOf(“128”) 创建新对象是因为 128 超出了缓存范围。

在实际应用中,除非特别需要新对象,否则推荐使用 Integer.valueOf() 或自动装箱,以便在可能的情况下利用缓存优化。

虽然了解这些细节很重要,但在日常编程中,我们应该专注于编写清晰、正确的代码,而不是过度依赖于这些底层优化。正确使用 .equals() 进行值比较,以及优先使用 valueOf() 或自动装箱,通常就足以编写高效且可靠的代码。

👉 GPT功能:

  1. GPT-4o知识问答:支持1000+token上下文记忆功能
  2. 最强代码大模型Code Copilot:代码自动补全、代码优化建议、代码重构等
  3. DALL-E AI绘画:AI绘画 + 剪辑 = 自媒体新时代
  4. 私信哪吒,直接使用GPT-4o

在这里插入图片描述


🏆文章收录于:100天精通Java从入门到就业

哪吒数年工作总结之结晶。

🏆哪吒多年工作总结:Java学习路线总结,搬砖工逆袭Java架构师

华为OD机试 2023B卷题库疯狂收录中,刷题点这里

刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试,发现新题目,随时更新,全天CSDN在线答疑。

点击下方名片,回复1024,获取《10万字208道Java经典面试题总结(2024修订版).pdf 》

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2058491.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Windosw下Visual Studio2022编译安装VTK(支持QT),ITK

VTK(Visualization Toolkit)是一个开源的、跨平台的三维可视化开发库,用于处理和可视化三维数据。它提供了一系列算法和工具,用于创建、操作和渲染复杂的三维图形,并支持多种数据表示方式,包括点、线、面、…

桔子哥/基于云快充协议1.5版本的充电桩系统软件-充电桩系统 -新能源车充电平台源码

基于云快充协议1.5版本的充电桩系统软件 介绍 SpringBoot 框架,充电桩平台充电桩系统充电平台充电桩互联互通协议云快充协议1.5-1.6协议新能源汽车二轮车公交车二轮车充电-四轮车充电充电源代码充电平台源码Java源码 软件功能 小程序端:城市切换、附…

植物神经紊乱也不怕!吃出好心情,饮食调整秘籍大公开

Hey小伙伴们~👋 今天我们来聊聊一个可能听起来有点陌生但又挺常见的健康问题——植物神经紊乱。是不是有时候感觉心跳加速、呼吸不畅、还容易失眠多梦?别怕,除了专业治疗,饮食调整也是超级重要的一环哦!🍽️…

想要不得痉挛性斜颈?做这六件事!

一、保持良好的坐姿和站姿 长期不正确的姿势会给颈部肌肉带来过大的压力,增加痉挛性斜颈的发病风险。无论是工作还是休息,都要时刻提醒自己保持挺胸抬头、肩膀放松、颈椎正直的姿势。比如,在办公时,调整电脑屏幕的高度和角度&…

2024东湖高新区下半年水测报名开始啦

东湖高新区下半年职称评审水测报名开始啦,报名时间8月3--8月16号,马上报名截止了!! 请想明年拿证的需要先准备论文和软著 中级工程师职称基本评审条件:1、专科及以上学历2、大学理工类专业3、专科工作满七年&#xf…

【FreeRTOS】队列实验-多设备玩游戏(旋转编码器)

目录 0 前言1 任务1.1 本节源码1.2实验目的1.3实现方案 2 code2.1 创建队列2.2 写队列2.3 创建任务 3 勘误 0 前言 学习视频: 【FreeRTOS入门与工程实践 --由浅入深带你学习FreeRTOS(FreeRTOS教程 基于STM32,以实际项目为导向)】…

基于SpringBoot+Vu e.js校园疫情防控系统的设计与实现

文章目录 前言具体实现截图详细视频演示技术栈系统测试为什么选择我官方认证玩家,服务很多代码文档,百分百好评,战绩可查!!入职于互联网大厂,可以交流,共同进步。有保障的售后 代码参考数据库参…

轮换IP与固定IP,如何抉择?

IP地址相信大家都知道,它是标识我们网络身份的重要凭证。从访问网站到数据抓取,都能看到IP地址的身影。那么,轮换IP和固定IP该怎么理解呢?本文将详细介绍这两种IP类型,旨在帮助你根据需求做出合适的选择。 什么是固定I…

VM Ubuntu22.04 ROS2 从头安装

目录 前言安装步骤1 设置编码2 添加ROS2软件源(从哪去下载ros2相关软件)报错解决方法 3 安装报错解决方法1解决方法2 报错 4 设置环境变量5 Ros2 测试Hello World 发送和监听小海龟键盘控制 成功 Hello World 发送和监听界面成功控制小海龟界面 前言 本…

OpenAI发布微调功能 允许企业客户定制AI模型

当地时间8月20日,OpenAI发布了一项新功能,允许企业客户使用他们自己的公司数据来定制其最强大的模型GPT-4o,这将大大提高应用程序的性能和准确性。此举出台之际,初创企业在人工智能(AI)产品上面临着日益激烈…

MySQL 高阶三 (索引性能分析)

执行过程 Explain explain select * from student s, course c , student_coure sc where s.id sc.studentid and c.id sc.courseid;EXPLAIN执行计划各字段含义: 【ld】 id相同,执行顺序从上到下; id不同,值越大,越先执行)。 【select_type…

【论文学习与撰写】快捷搜索指令filetype:pdf,搜索引擎关键词搜索pdf格式文件或者word格式文件。文献搜索方法大全。

1、使用快捷搜索指令 在搜索框中输入:关键词空格filetype英文冒号文件格式 (如:关键词 filetype:pdf)。 通过这种方式,搜索引擎会限定搜索结果只显示 PDF 格式的文件。 比如搜索“2018 年考研英语真题 filetype:pd…

使用 Docker 安装 Ollama 部署本地大模型并接入 One-API

Ollama是一款开源工具,它允许用户在本地便捷地运行多种大型开源模型,包括清华大学的ChatGLM、阿里的千问以及Meta的llama等。目前,Ollama兼容macOS、Linux和Windows三大主流操作系统。本文将介绍如何通过Docker安装Ollama,并将其部…

苹果手机如何备份通讯录?4个方法手把手教你备份

苹果手机通讯录是我们联系亲朋好友的重要工具。然而,如果苹果手机出现损坏或者是丢失的情况,那手机通讯录存储的联系方式也会随之消失。为了避免这种情况的发生,定期备份通讯录变得至关重要,那么,苹果手机如何备份通讯…

基于Nginx进行服务器隐私保护:隐藏真实的服务器IP地址或主机名( 转发代理、服务器的别名)

文章目录 引言I 隐藏站点请求API的真实服务器IP和端口查看主文件配置服务的端口和站点目录的映射配置proxy_pass代理转发代理转发的其他配置【可选】II 服务器主机名处理隐藏真实的服务器主机名判断API请求是哪个服务器处理的III GLC日志中心新增用户信息扩展:在Linux中配置主…

趋势分享|Gartner解读中国企业容器管理新挑战:混合环境、容器安全、AI支持

不少企业都使用容器管理类软件/平台,方便容器环境的部署和运维。而随着应用系统的运行环境逐渐多元化,IT 运维人员仅依靠容器管理产品,已难以同时兼顾多种 IT 基础设施上的多个应用运行环境。同时,AI 等高性能应用场景的兴起&…

探索802.1X:构筑安全网络的认证之盾

在现代网络安全的世界里,有一个极其重要但又常常被忽视的角色,它就是802.1x认证协议。这个协议可以被称作网络安全的守护者,为我们提供了强有力的防护。今天,我们就来深入探讨一下802.1x的原理、应用和测试,看看它是如…

做谷歌seo如何创建良好的用户体验?

Google 希望排名靠前的页面能够为用户提供良好的体验,所以网站提升用户体验很重要。以下是一些实用的小建议,让你的网站更受用户欢迎,并且有助于提升你的 SEO 排名。 现代化设计:确保你的网站设计符合当前的审美和功能趋势。使用高…

基于ssm的毕业回忆录系统的设计与实现

获取源码联系方式请查看文章结尾🍅 摘 要 随着信息化时代的到来,系统管理都趋向于智能化、系统化,毕业回忆录也不例外,但目前国内的有些学校仍然都使用人工管理,学校规模越来越大,同时信息量也越来越庞大&a…

6.画面渲染及背景-《篮球比赛展示管理系统》现场管理员角色操作手册

通过[特效实验室]及[更换背景] 对整个展示界面的底部图层进行动画渲染。此功能是平台的一大特色。一般用在选手上场或颁奖等。用户可以根据现场情况,妥善发挥。背景图片及其特效,应该在比赛之前设置好。