别再傻傻分不清!int和Integer这7个坑,坑惨多少Java程序员
引言一、基本概念是, 原始类型跟包装类, 1.1 当中的 int 属于原始数据类型。int属于Java里的原始数据类型Type, 此类型用于显示整数, 于Java之中, 原始数据类型属于最基础的数据类型, 它们直接存放数据的值, int类型占据32位4个字节的内存空间, 其取值范围是从 - 到 , 举例如下:int num 10;在这里, num属于int类型变量, 它将整数值, 以最纯粹状态, 直接加以存放, 存放的是代表数量为十的数值, 也就是10。1.2 - 包装类是与int相对应的那个包装类 Class, 包装类乃是Java针对每个原始数据类型所给出的对应的类, 这些类把原始数据类型封装成为对象, 目的是能够在那些有需要对象的场景当中去使用, 类给出了诸多有用的方法, 像是把字符串转变为整数、对两个整数加以比较等, 比如:Integer integerNum new Integer(10);这里的 是一个 类型的对象它封装了整数值 10。二、内存分配与存储方式2.1 int 的内存分配int身为原始数据类型, 其于栈也就是Stack之上进行内存分配, 栈属于一种后进先出即LIFO的数据结构, 它的访问速度是相当快的, 在定义一个int变量之际, Java会于栈上为其分配一块有着固定大小的内存空间, 用以存储整数值, 比如:int a 10; int b 20;在这个例子里头, a以及b各自于栈上分配了4个字节的内存空间, 以此来存储它们自身的值。2.2 的内存分配在作为对象时, 其内存分配方式跟int不一样, 对象于堆上进行内存分配, 而在栈里存储的属于该对象的引用, 堆是个用来存储对象的内存区域, 它的空间相对而言比较大, 然而访问速度比栈要慢, 比如:Integer c new Integer(10); Integer d new Integer(20);在这个例子里头, c以及d是, 对象的引用, 它们于栈上进行存储, 然而实际的, 对象却是在堆上进行存储的。三、默认值的差异3.1 int 的默认值于Java里, 要是存在一个未经显式初始化的int类型变量, 那它会有一个默认值对于类的成员变量而言, int的默认值是0而针对局部变量来讲, 必须要在使用之前予以显式初始化, 不然就会出现编译错误举例如下:public class IntDefaultValue { // 类的成员变量默认值为 0 int memberInt; public static void main(String[] args) { IntDefaultValue obj new IntDefaultValue(); System.out.println(obj.memberInt); // 输出 0 // 局部变量必须显式初始化 // int localInt; // 编译错误 int localInt 10; } }3.2 的默认值处在对象这一范畴内, 它所具备无明确赋值时的默认状态是数据为空值的情形。这传达出一种状况, 即要是某一个特定类型的变量未曾借由显式设定而完成初始化操作, 那么该变量将会用以指向空值这一状态。就好比下面所列举的示例那样:public class IntegerDefaultValue { // 类的成员变量默认值为 null Integer memberInteger; public static void main(String[] args) { IntegerDefaultValue obj new IntegerDefaultValue(); System.out.println(obj.memberInteger); // 输出 null // 局部变量同样默认值为 null Integer localInteger; System.out.println(localInteger); // 输出 null } }四、比较操作的不同4.1 int 的比较int类型进行比较, 是直接对它们的值予以比较。运用运算符, 能够比较两个int变量的值是不是相等。举例来说:int x 10; int y 10; System.out.println(x y); // 输出 true处于这个例子里头, x的值是10, y的值同样是10, 因而x y这个比较得出的结果是true。4.2 的比较对于对象的比较而言, 得格外加以留意。当运用 运算符去比较两个对象之际, 所比较的是它们的引用是不是相等, 并非它们的值是不是相等。举例来说:Integer m new Integer(10); Integer n new Integer(10); System.out.println(m n); // 输出 false于这个例子里头, 虽说 m 与 n 的值俱为 10, 然而它们乃是两个各异的对象故而 m n 的结果是 false。要是想比较对象的值是否等同, 应当运用 () 方法。比如:Integer p new Integer(10); Integer q new Integer(10); System.out.println(p.equals(q)); // 输出 true五、自动装箱与拆箱5.1 自动装箱自动装箱, 它是指, Java编译器会自动地, 把原始数据类型, 转换为对应的, 包装类对象, 比如:int num 10; Integer integerNum num; // 自动装箱在此例子里头, num归属于int类型的变量, 借由自动装箱这一方式, 它被转变成为对象。5.2 自动拆箱自动拆箱所指的是, Java编译器会自动去把包装类对象, 转换成为对应的原始数据类型, 比如说:Integer integerValue new Integer(20); int intValue integerValue; // 自动拆箱在此例子当中, 存在着一个对象, 借助自动拆箱这种方式, 该对象被转变成为int类型的变量。5.3 自动装箱和拆箱的陷阱尽管自动装箱以及拆箱给予了编程方面的便利, 然而也有可能会引发一些陷阱, 举例来说, 当运用 运算符去比较对象之际, 要是牵涉到自动装箱与拆箱, 便有可能获取到意外的结果, 思索一下下面这段代码:Integer a 127; Integer b 127; System.out.println(a b); // 输出 true Integer c 128; Integer d 128; System.out.println(c d); // 输出 false这是由于Java出于提升性能的目的, 针对 -128 至 127 之间的对象实施为缓存操作。在借助自动装箱创建这个范国内的诸多对象的情况下, 会径直从缓存里获取, 所以 a 与 b 所引用的是同一个对象然而对于超出此范围的那些对象而言, 每次都会创作出新对象, 故而 c 和 d 所引用的是不同的对象。六、方法调用的区别6.1 int 类型的方法调用int身为原始数据类型, 其不存在可供调用的方法。它仅能开展基本性的算术运算以及比较操作。比如说:int num 10; // num.xxx() 会编译错误因为 int 没有方法6.2 类型的方法调用从作为对象的角度而言, 它给出了诸多具备用处的办法, 举例来说, 这个类给出一种方法, 该方法是用来把字符串转变为整数的, 还有一种方法, 此方法是用于把整数转化成字符串等, 就像这样。String str 123; int intValue Integer.parseInt(str); System.out.println(intValue); // 输出 123 Integer integerValue new Integer(456); String strValue integerValue.toString(); System.out.println(strValue); // 输出 456七、性能差异7.1 int 的性能优势因为 int 属于原始数据类型, 其于栈上开展内存分配, 具备访问速度快的特点, 且占用的内存空间少。做大量算术运算以及比较操作期间, 运用 int 能够获取更佳性能。拿循环里做累加操作这个情况来说:long startTime System.currentTimeMillis(); int sum 0; for (int i 0; i 1000000; i) { sum i; } long endTime System.currentTimeMillis(); System.out.println(使用 int 累加耗时 (endTime - startTime) 毫秒);7.2 的性能劣势作为对象, 其创建以及销毁之时得需要额外的内存开销, 而且于进行自动装箱与此同时拆箱操作之际照样会耗费一定的性能。在开展大量的算术运算以及比较操作的情况下, 运用 的性能显著地会比int低。比如, 同样的累加操作运用:long startTime System.currentTimeMillis(); Integer sumInteger 0; for (Integer i 0; i 1000000; i) { sumInteger i; } long endTime System.currentTimeMillis(); System.out.println(使用 Integer 累加耗时 (endTime - startTime) 毫秒);结论整型和, 尽管都用以表明整数, 然而它们于基本概念、内存分配、默认值、比较操作、自动装箱与拆箱、方法调用以及性能等层面存有诸多关键差异。在实际编程之时, 开发者需依据具体的需求挑选适宜的数据类型, 要是仅想进行基本的算术运算以及比较操作, 并且对性能有着较高要求, 提议使用整型要是需要运用对象的特性, 比如在集合中存储整数, 或者需要调用类所提供的方法, 那么就应当使用。深入地去达成对这些区别的理解, 如此一来那些处于潜在态势的编程陷阱, 开发者是能够予以避开的, 进而去编写具备更高效率, 且稳定性十足的Java代码。愿此篇文章, 可助力Java开发者, 更优质地把控int与 的差异, 于编程实践期间作出更具明智性的抉择。

相关新闻

北京高性价比Java培训班推荐

北京高性价比Java培训班推荐

不管是去进行购物, 还是去钻研技术方面的知识, 这当中, 都是会牵扯到性价比这么个问题的, 每个人也肯定都是想要凭借最少的钱财去做成更多的事情的。那么, 就针对在北京涉猎java编造这件知识情况来讲, 哪一家的培训班在价格方面比较低微, 并且又能够让人学到更多一些的知识?北…

2026/8/3 5:12:31 阅读更多 →
深入解析ECONNRESET:从TCP原理到HTTP连接重置的排查与解决

深入解析ECONNRESET:从TCP原理到HTTP连接重置的排查与解决

1. 项目概述:当HTTP请求突然“失联”在开发和运维的日常里,没有什么比一个看似随机、难以复现的网络错误更让人头疼的了。Error: read ECONNRESET就是这样一个典型的“幽灵”错误。你可能正在愉快地调试一个API接口,或者一个后台服务正在稳定…

2026/8/3 5:11:30 阅读更多 →
Revit族剪切失效?建模助手一键剪切功能原理与实战

Revit族剪切失效?建模助手一键剪切功能原理与实战

1. 项目概述:当Revit的“剪切”功能失灵时在Revit的日常建模工作中,我们经常会遇到一个看似简单却让人头疼的问题:精心创建的族(Family)无法按预期剪切(Cut)其他构件。比如,你做了一…

2026/8/3 5:11:30 阅读更多 →

最新新闻

嵌入式 AI 编程实战:从芯片到 AI 工具链---总结笔记

嵌入式 AI 编程实战:从芯片到 AI 工具链---总结笔记

目录 1.安装Skill 2.使用 market-mrd-analyst 生成 MRD 3.使用 mrd-to-prd 把 MRD 转成 PRD 4.使用NextBoard生成硬件产品的PCB方案 5.原理图AI识别 6.查找芯片相关资料技能 7.外设开发资料提取 8.工程脚手架搭建 9.创建工程最小仓库 10.板级驱动开发 11.遇到问题如…

2026/8/4 23:18:27 阅读更多 →
德鲁克书籍和作品那么多,真正适合入门的是这一本

德鲁克书籍和作品那么多,真正适合入门的是这一本

如果想读懂德鲁克,与其在十几本经典著作之间来回翻阅,不如先认真读一下《经理人参阅:精读德鲁克》。谈到管理学,很少有人会绕过德鲁克。他提出的许多观点,几十年后的今天依然影响着企业管理、组织建设和个人成长。也正…

2026/8/4 23:18:27 阅读更多 →
如何理解熔盐堆的未来挑战?Transatomic Reactor27开源项目中的10大技术难题深度剖析

如何理解熔盐堆的未来挑战?Transatomic Reactor27开源项目中的10大技术难题深度剖析

如何理解熔盐堆的未来挑战?Transatomic Reactor27开源项目中的10大技术难题深度剖析 【免费下载链接】reactor Transatomic reactor design documentation 项目地址: https://gitcode.com/gh_mirrors/reactor27/reactor Transatomic Reactor27开源项目是熔盐…

2026/8/4 23:18:27 阅读更多 →
如何在多个Excel文件中快速查找特定内容?QueryExcel帮你告别繁琐搜索

如何在多个Excel文件中快速查找特定内容?QueryExcel帮你告别繁琐搜索

如何在多个Excel文件中快速查找特定内容?QueryExcel帮你告别繁琐搜索 【免费下载链接】QueryExcel 多Excel文件内容查询工具。 项目地址: https://gitcode.com/gh_mirrors/qu/QueryExcel 你是否曾经面对几十个甚至上百个Excel文件,需要在其中查找…

2026/8/4 23:18:27 阅读更多 →
K-EXAONE-2.0-750B-A37B震撼发布:LG AI Research新一代MoE模型如何突破7500亿参数壁垒?

K-EXAONE-2.0-750B-A37B震撼发布:LG AI Research新一代MoE模型如何突破7500亿参数壁垒?

K-EXAONE-2.0-750B-A37B震撼发布:LG AI Research新一代MoE模型如何突破7500亿参数壁垒? 【免费下载链接】K-EXAONE-2.0-750B-A37B 项目地址: https://ai.gitcode.com/hf_mirrors/LGAI-EXAONE/K-EXAONE-2.0-750B-A37B K-EXAONE-2.0-750B-A37B是LG…

2026/8/4 23:18:27 阅读更多 →
OpenMoHAA核心功能解析:从bug修复到现代平台支持的完整清单

OpenMoHAA核心功能解析:从bug修复到现代平台支持的完整清单

OpenMoHAA核心功能解析:从bug修复到现代平台支持的完整清单 【免费下载链接】openmohaa Open re-implementation of Medal of Honor: Allied Assault including Spearhead and Breakthrough expansions with modern features and bugfixes from ioquake3 with cross…

2026/8/4 23:17:26 阅读更多 →

日新闻

AI Agent白手起家26: 使用标准事件驱动大模型实践

AI Agent白手起家26: 使用标准事件驱动大模型实践

纲要 练习目标:掌握大模型标准事件的调用回顾 LangChain 中的核心标准事件 invokestreambatchastream_eventswith_structured_output 环境准备实战代码:多种事件调用对比 同步调用与流式输出批量处理异步事件流监听结构化输出 运行说明与预期结果总结与扩…

2026/8/4 0:00:40 阅读更多 →
dealsea是什么?跨境卖家必知的美国deal站入门指南

dealsea是什么?跨境卖家必知的美国deal站入门指南

说实话,第一次听说美国这个老牌折扣网站的跨境卖家,十个有八个会问同一个问题:这个平台到底是干嘛的?我见过一个做家居出口的朋友,他在亚马逊上月销二十万美金,却从来没用过它。我给他看了首页——一屏一屏…

2026/8/4 0:01:40 阅读更多 →
清华大学重磅EST:植物自导电闪蒸焦耳热600°C/2600°C两步法!稀土超积累植物秒级转化为CeO₂-石墨烯电催化剂!

清华大学重磅EST:植物自导电闪蒸焦耳热600°C/2600°C两步法!稀土超积累植物秒级转化为CeO₂-石墨烯电催化剂!

通讯作者:邓兵、刘建国通讯单位:清华大学DOI:https://doi.org/10.1021/acs.est.6c00603研究背景稀土元素(REEs)是清洁能源技术与电子器件不可或缺的核心原料,然而传统提取方式依赖能耗高、排放大的采矿与强…

2026/8/4 0:01:40 阅读更多 →

周新闻

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

1. 从水管网络到最大流:一个核心问题的诞生想象一下,你是一个城市供水系统的总工程师。你的城市有多个水源(水库),需要通过一个复杂的地下管道网络,将水输送到各个居民区。每条管道都有其最大通水能力&…

2026/8/4 13:24:41 阅读更多 →
基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

2026/8/4 11:41:39 阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起:为什么我们需要互相关几年前,我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号,理论上它们接收到的声音波形应该非常相似,只是由于麦克风位置不同&#xff…

2026/8/4 5:26:40 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/4 13:38:24 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/4 11:09:16 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/4 13:38:40 阅读更多 →