【Java面试笔记:基础】7.int和Integer有什么区别?
在Java中,int和Integer虽然都用于表示整数值,但它们在本质、用法和特性上有显著差异。
1. int 和 Integer 的区别
- int:
- 原始数据类型:int 是 Java 的 8 个原始数据类型之一,用于表示整数。
- 性能优势:直接存储数值,不涉及对象创建和垃圾回收,性能更高。
- 线程安全:由于是值类型,不存在线程安全问题。
- Integer:
- 包装类:Integer 是 int 的包装类,提供了对 int 类型数据的封装和操作。
- 自动装箱和拆箱:Java 5 引入了自动装箱(boxing)和自动拆箱(unboxing)功能,允许在 int 和 Integer 之间自动转换。
- 缓存机制:Integer 提供了值缓存机制,默认缓存范围是 -128 到 127。通过静态工厂方法 valueOf 实现缓存,减少对象创建。
- 不可变性:Integer 是不可变类,一旦创建,其值不能被修改。
2. 自动装箱和拆箱
- 自动装箱:将 int 类型的值自动转换为 Integer 对象(隐式调用Integer.valueOf())。
Integer a = 100; // 自动装箱 → Integer.valueOf(100) - 自动拆箱:将 Integer 对象自动转换为 int 类型的值(隐式调用intValue())。
int b = a; // 自动拆箱 → a.intValue() - 性能影响:虽然方便,但可能会引入额外的性能开销,尤其是在性能敏感的场合。
- 潜在风险:
Integer为null时拆箱会抛出NullPointerException。Integer num = null; int value = num; // 抛出 NullPointerException
3. Integer 的缓存机制
- 默认缓存范围:-128 到 127。
Integer a = 127; Integer b = 127; System.out.println(a == b); // true(同一缓存对象)Integer c = 128; Integer d = 128; System.out.println(c == d); // false(超出缓存范围,新建对象) - 调整缓存范围:可以通过 JVM 参数 -XX:AutoBoxCacheMax=N 调整缓存上限值。
- 缓存实现:通过 IntegerCache 类实现,利用静态初始化块在程序启动时初始化缓存数组。
4. 原始数据类型和包装类的局限性
- 原始数据类型:不能直接使用 Java 泛型,因为泛型要求类型必须是对象。
- 包装类:虽然提供了更多功能,但创建对象的开销较大,尤其是在大量使用时。
5. 对象的内存结构
- 对象头:包含对象的运行时数据(如哈希码、锁状态标志等)和类型指针。
- 实例数据:存储对象的实际数据,包括继承的字段和定义的字段。
- 对齐填充:用于确保对象大小是 8 字节的倍数。
6. 性能优化建议
- 避免无意中的装箱和拆箱:在性能敏感的场合,尽量避免自动装箱和拆箱。
- 使用原始数据类型:在需要高性能的场景中,优先使用原始数据类型。
- 使用线程安全的原子类:如 AtomicInteger,用于线程安全的整数操作。
- 谨慎处理null:对Integer判空后再拆箱。
- 利用缓存:在-128到127范围内尽量复用Integer对象。
7. 示例代码
装箱拆箱陷阱
Integer num1 = 100; // 自动装箱(缓存对象)
Integer num2 = 100; // 复用缓存对象
System.out.println(num1 == num2); // trueInteger num3 = 200; // 自动装箱(新建对象)
Integer num4 = 200; // 自动装箱(新建对象)
System.out.println(num3 == num4); // false
空指针异常
Integer value = null;
// int result = value; // 拆箱抛出 NullPointerException
int result = (value != null) ? value : 0; // 安全处理
8. 使用场景总结
| 场景 | 推荐类型 | 理由 |
|---|---|---|
| 高频计算(如循环) | int | 避免装箱拆箱开销,提升性能 |
集合存储(如List) | Integer | 集合只能存储对象(泛型不支持基本类型) |
数据库字段可能为null | Integer | 用null表示缺失值 |
| JSON序列化/反序列化 | Integer | 兼容null值,避免默认值冲突 |
相关文章:
【Java面试笔记:基础】7.int和Integer有什么区别?
在Java中,int和Integer虽然都用于表示整数值,但它们在本质、用法和特性上有显著差异。 1. int 和 Integer 的区别 int: 原始数据类型:int 是 Java 的 8 个原始数据类型之一,用于表示整数。性能优势:直接存…...
鸿蒙移动应用开发--渲染控制实验
任务:使用“对象数组”、“ForEach渲染”、“Badge角标组件”、“Grid布局”等相关知识,实现生效抽奖卡案例。如图1所示: 图1 生肖抽奖卡实例图 图1(a)中有6张生肖卡可以抽奖,每抽中一张,会通过弹层显示出来…...
AI代表企业签订的合同是否具有法律效力?
AI代表企业签订的合同是否具有法律效力? 首席数据官高鹏律师团队编著 在数字经济高速发展的今天,人工智能(AI)技术已广泛应用于商业活动,包括合同起草、审查甚至签署环节。然而,AI代表企业签订的合同是否具…...
安宝特分享|AR智能装备赋能企业效率跃升
AR装备开启智能培训新时代 在智能制造与数字化转型浪潮下,传统培训体系正面临深度重构。安宝特基于工业级AR智能终端打造的培训系统,可助力企业构建智慧培训新生态。 AR技术在不同领域的助力 01远程指导方面 相较于传统视频教学的单向输出模式&#x…...
SpringCloud组件—Eureka
一.背景 1.问题提出 我们在一个父项目下写了两个子项目,需要两个子项目之间相互调用。我们可以发送HTTP请求来获取我们想要的资源,具体实现的方法有很多,可以用HttpURLConnection、HttpClient、Okhttp、 RestTemplate等。 举个例子&#x…...
模型 螃蟹效应
系列文章分享模型,了解更多👉 模型_思维模型目录。个体互钳,团队难行。 1 螃蟹效应的应用 1.1 教育行业—优秀教师遭集体举报 行业背景:某市重点中学推行绩效改革,将班级升学率与教师奖金直接挂钩,打破原…...
符号速率估计——小波变换法
[TOC]符号速率估计——小波变换法 一、原理 1.Haar小波变换 小波变换在信号处理领域被成为数学显微镜,不同于傅里叶变换,小波变换可以观测信号随时间变换的频谱特征,因此,常用于时频分析。 当小波变换前后位置处于同一个码元…...
【架构】ANSI/IEEE 1471-2000标准深度解析:软件密集型系统架构描述推荐实践
引言 在软件工程领域,架构设计是确保系统成功的关键因素之一。随着软件系统日益复杂化,如何有效描述和沟通系统架构成为了一个亟待解决的问题。ANSI/IEEE 1471-2000(正式名称为"推荐软件密集型系统架构描述实践")应运而…...
python兴趣匹配算法
python兴趣匹配算法,用于推荐好友,短视频推荐等等领域 功能列表: 1.用户类的定义,存储用户的基本信息和兴趣。 2.计算两个用户之间兴趣的匹配分数,比较每一位是否相同。 3.根据匹配分数对候选人进行排序。 4.提供交互…...
每日算法-250422
每日算法 - 250422 1561. 你可以获得的最大硬币数目 题目 思路 贪心 解题过程 根据题意,我们想要获得最大的硬币数目。每次选择时,有三堆硬币:最大的一堆会被 Alice 拿走,最小的一堆会被 Bob 拿走,剩下的一堆…...
【MATLAB第116期】基于MATLAB的NBRO-XGBoost的SHAP可解释回归模型(敏感性分析方法)
【MATLAB第116期】基于MATLAB的NBRO-XGBoost的SHAP可解释回归模型(敏感性分析方法) 引言 该文章实现了一个可解释的回归模型,使用NBRO-XGBoost(方法可以替换,但是需要有一定的编程基础)来预测特征输出。该…...
微信公众号消息模板推送没有“详情“按钮?无法点击跳转
踩坑!!!!踩坑!!!!踩坑!!!! 如下 简单说下我的情况,按官方文档传参url了 、但就是看不到查看详情按钮 。如下 真凶&#x…...
WHAT - 静态资源缓存穿透
文章目录 1. 动态哈希命名的基本思路2. 具体实现2.1 Vite/Webpack 配置动态哈希2.2 HTML 文件中动态引用手动引用使用 index.html 模板动态插入 2.3 结合 Cache-Control 避免缓存穿透2.4 适用于多环境的动态策略 总结 在多环境部署中,静态资源缓存穿透是一个常见问题…...
电动单座V型调节阀的“隐形守护者”——阀杆节流套如何解决高流速冲刷难题
电动单座V型调节阀的“隐形守护者”——阀杆节流套如何解决高流速冲刷难题? 在工业自动化控制中,电动单座V型调节阀因其精准的流量调节能力,成为石油、化工等领域的核心设备。然而,长期高流速工况下,阀芯与阀座的冲刷腐…...
Redis高级篇之I/O多路复用的引入解析
文章目录 一、问题背景1. 高并发连接的管理2. 避免阻塞和延迟3. 减少上下文切换开销4. 高效的事件通知机制5. 简化编程模型6. 低延迟响应本章小节 二、I/O多路复用高性能的本质1. 避免无意义的轮询:O(1) 事件检测2. 非阻塞 I/O 零拷贝:最大化 CPU 利用率…...
鸿蒙NEXT开发权限工具类(申请授权相关)(ArkTs)
import abilityAccessCtrl, { Permissions } from ohos.abilityAccessCtrl; import { bundleManager, common, PermissionRequestResult } from kit.AbilityKit; import { BusinessError } from ohos.base; import { ToastUtil } from ./ToastUtil;/*** 权限工具类(…...
自动驾驶与机器人算法学习
自动驾驶与机器人算法学习 直播与学习途径 欢迎你的点赞关注~...
【网络编程】TCP数据流套接字编程
目录 一. TCP API 二. TCP回显服务器-客户端 1. 服务器 2. 客户端 3. 服务端-客户端工作流程 4. 服务器优化 TCP数据流套接字编程是一种基于有连接协议的网络通信方式 一. TCP API 在TCP编程中,主要使用两个核心类ServerSocket 和 Socket ServerSocket Ser…...
从零开始配置 Zabbix 数据库监控:MySQL 实战指南
Zabbix作为一款开源的分布式监控工具,在监控MySQL数据库方面具有显著优势,能够为数据库的稳定运行、性能优化和故障排查提供全面支持。以下是使用Zabbix监控MySQL数据库的配置。 一、安装 Zabbix Agent 和 MySQL 1. 安装 Zabbix Agent services:zabbix…...
Java学习手册:RESTful API 设计原则
一、RESTful API 概述 REST(Representational State Transfer)即表述性状态转移,是一种软件架构风格,用于设计网络应用程序。RESTful API 是符合 REST 原则的 Web API,通过使用 HTTP 协议和标准方法(GET、…...
读一篇AI论文并理解——通过幻觉诱导优化缓解大型视觉语言模型中的幻觉
目录 论文介绍 标题 作者 Publish Date Time PDF文章下载地址 文章理解分析 📄 中文摘要:《通过幻觉诱导优化缓解大型视觉语言模型中的幻觉》 🧠 论文核心动机 🚀 创新方法:HIO(Hallucination-In…...
Linux与Anaconda环境部署与管理(运维交接)
文章目录 一、前言二、Linux基础命令三、进程管理与监控四、后台任务与服务管理五、Anaconda环境管理六、JAR包的运行与管理七、网络与端口映射八、安全与权限管理九、故障排查与日志分析十、附录 一、前言 本文将详细介绍Linux系统下的常用命令以及Anaconda环境管理ÿ…...
IOT项目——物联网 GPS
GeoLinker - 物联网 GPS 可视化工具 项目来源制作引导 项目来源 [视频链接] https://youtu.be/vi_cIuxDpcA?sigMaOKv681bAirQF8 想要在任何地方追踪任何东西吗?在本视频中,我们将向您展示如何使用 ESP32 和 Neo-6M GPS 模块构建 GPS 跟踪器——这是一…...
Java学习手册:HTTP 协议基础知识
一、HTTP 协议概述 HTTP(HyperText Transfer Protocol)即超文本传输协议,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传输协议。它是一个应用层协议,基于请求-响应模型…...
【含文档+PPT+源码】基于微信小程序的健康饮食食谱推荐平台的设计与实现
课程目标: 教你从零开始部署运行项目,学习环境搭建、项目导入及部署,含项目源码、文档、数据库、软件等资料 课程简介: 本课程演示的是一款基于微信小程序的健康饮食食谱推荐平台的设计与实现,主要针对计算机相关专…...
Redis 慢查询分析与优化
Redis 慢查询分析与优化 参考书籍 : https://weread.qq.com/web/reader/d5432be0813ab98b6g0133f5kd8232f00235d82c8d161fb2 以下从配置参数、耗时细分、分析工具、优化策略四个维度深入解析 Redis 慢查询问题,结合实战调优建议,帮助开发者…...
使用达梦官方管理工具SQLark快速生成数据库ER图并导出
在数据库设计与开发中,实体-关系图(ER 图)作为数据建模的核心工具,能够直观呈现表结构、字段属性及表间关系,是团队沟通和文档维护的重要工具。然而,许多开发者在实际工作中常面临一个痛点:手动…...
鸿蒙NEXT开发定位工具类 (WGS-84坐标系)(ArkTs)
import geoLocationManager from ohos.geoLocationManager; import { BusinessError, Callback } from ohos.base; import { LogUtil } from ./LogUtil; import { PermissionUtil } from ./PermissionUtil; import { map, mapCommon } from kit.MapKit; /*** 定位工具类 (WGS-8…...
模型 替罪羊效应
系列文章分享模型,了解更多👉 模型_思维模型目录。转嫁罪责于无辜,维系群体控制与稳定 1 替罪羊效应的应用 1.1 多品牌危机中的行业“背锅侠” 行业背景:食品行业爆发大规模安全危机,多家企业卷入某类食品重金属超标…...
TapData × 梦加速计划 | 与 AI 共舞,TapData 携 AI Ready 实时数据平台亮相加速营,企业数据基础设施现代化
在实时跃动的数据节拍中,TapData 与 AI 共舞,踏出智能未来的新一步。 4月10日,由前海产业发展集团、深圳市前海梦工场、斑马星球科创加速平台等联合发起的「梦加速计划下一位独角兽营」正式启航。 本次加速营以“打造下一位独角兽企业”为目…...
