news 2026/4/8 13:50:39

Java面试必看:int与Integer的区别详解

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Java面试必看:int与Integer的区别详解

文章目录

  • Java面试必看:int与Integer的区别详解 ?
    • 一、什么是`int`和`Integer`?
      • 1. `int`的基本特性
      • 2. `Integer`的基本特性
    • 二、`int`和`Integer`的主要区别
      • 1. 内存分配方式不同
        • 代码示例:
      • 2. 方法调用方式不同
        • 代码示例:
      • 3. 装箱与拆箱机制
        • 装箱示例:
        • 拆箱示例:
      • 4. 性能差异
        • 性能对比示例:
    • 三、面试中常考的问题
      • 1. `Integer a = new Integer(5);`与`int b = 5;`的区别
      • 2. `Integer a = 5;`与`int b = 5;`的区别
      • 3. `Integer`的缓存机制
        • 缓存机制示例:
      • 4. `Integer`的null值
        • null值示例:
    • 四、总结
    • 理解这些区别对于写出高效、无bug的代码非常重要。
      • 📚 领取 | 1000+ 套高质量面试题大合集(无套路,闫工带你飞一把)!

Java面试必看:int与Integer的区别详解 ?

大家好,我是闫工,一个专注于Java技术分享的博主。今天我们要聊的话题是Java中两个看似简单却经常被问到的问题——intInteger的区别。这个问题在面试中出现频率非常高,甚至可以说是“高频考点”。作为一名即将步入职场的开发者,或者已经在职场奋斗的老兵,你是否对这两个关键字之间的区别了如指掌呢?如果是的话,那这篇文章可以作为你的复习资料;如果不是,那就让我来为你详细讲解一下吧!


一、什么是intInteger

在Java中,int是一个基本数据类型(Primitive Type),而Integer则是它的包装类(Wrapper Class)。简单来说,int是用来存储整数的,属于Java的核心关键字之一;而Integer则是对int进行封装的一个对象。

1.int的基本特性

  • 内存占用:在32位系统中,int占4个字节(即32位)。
  • 取值范围:从-2³¹到2³¹-1,也就是大约-21亿到21亿之间。
  • 性能:由于int是直接存储在栈中的,因此访问速度非常快。

2.Integer的基本特性

  • 内存占用Integer是一个对象,它不仅包含整数值本身,还需要存储一些额外的信息(比如类的元数据等),因此占用的内存空间比int大得多。
  • 取值范围:与int相同,都是从-2³¹到2³¹-1。
  • 性能:由于Integer是一个对象,访问时需要通过引用进行操作,因此速度会慢于int

二、intInteger的主要区别

1. 内存分配方式不同

这是最直观的区别。int是基本数据类型,它直接存储在栈(Stack)中;而Integer是一个对象,它存储在堆(Heap)中。栈内存由JVM自动管理,速度快但容量有限;堆内存则需要手动管理,速度相对较慢。

代码示例:
publicclassIntVsInteger{publicstaticvoidmain(String[]args){inta=10;// a存储在栈中Integerb=20;// b存储在堆中,栈中保存的是指向堆的引用}}

2. 方法调用方式不同

int作为基本类型,无法直接调用方法;而Integer作为一个对象,可以调用它的各种方法(比如parseInt()toString()等)。

代码示例:
publicclassIntVsInteger{publicstaticvoidmain(String[]args){inta=10;// 下面的代码会报错,因为int不能直接调用方法// a.toString();Integerb=20;Stringstr=b.toString();// 这里没问题,b是Integer对象,可以调用方法}}

3. 装箱与拆箱机制

这是intInteger之间最有趣的部分。装箱(Boxing)是指将基本类型转换为对应的包装类;而拆箱(Unboxing)则是相反的操作。

装箱示例:
publicclassIntVsInteger{publicstaticvoidmain(String[]args){intnum=10;IntegerboxedNum=num;// 自动装箱,将int转换为Integer}}
拆箱示例:
publicclassIntVsInteger{publicstaticvoidmain(String[]args){Integernum=20;intunboxedNum=num;// 自动拆箱,将Integer转换为int}}

4. 性能差异

由于int是基本类型,访问速度非常快;而Integer需要通过对象来操作,因此性能上会有一定的损失。

性能对比示例:
publicclassIntVsInteger{publicstaticvoidmain(String[]args){longstartTime=System.currentTimeMillis();intsumInt=0;for(inti=0;i<1000000000;i++){sumInt+=i;}System.out.println("sumInt计算时间:"+(System.currentTimeMillis()-startTime)+"ms");startTime=System.currentTimeMillis();IntegersumInteger=0;for(inti=0;i<1000000000;i++){sumInteger+=i;// 这里会自动装箱和拆箱}System.out.println("sumInteger计算时间:"+(System.currentTimeMillis()-startTime)+"ms");}}

运行这段代码,你会发现int的计算速度远快于Integer


三、面试中常考的问题

1.Integer a = new Integer(5);int b = 5;的区别

  • a是一个对象,存储在堆中;b是基本类型,存储在栈中。
  • a需要调用构造方法初始化,而b直接赋值即可。

2.Integer a = 5;int b = 5;的区别

这里有一个细节需要注意:当使用Integer a = 5;时,Java会自动进行装箱操作。也就是说,这行代码等价于Integer a = Integer.valueOf(5);

3.Integer的缓存机制

在Java中,Integer类型对-128到127之间的整数进行了缓存处理。这意味着当你创建这些范围内的Integer对象时,实际上是直接从缓存池中获取,而不是每次都new一个新的对象。

缓存机制示例:
publicclassIntegerCache{publicstaticvoidmain(String[]args){Integera=10;Integerb=10;System.out.println(a==b);// 输出true,因为它们引用同一个缓存对象Integerc=200;Integerd=200;System.out.println(c==d);// 输出false,因为超出缓存范围}}

4.Integer的null值

由于int是基本类型,不能为null;而Integer是一个对象,可以为null。

null值示例:
publicclassIntegerNull{publicstaticvoidmain(String[]args){intnum1=5;// 无法赋值nullIntegernum2=null;// 这是允许的if(num2==null){// 需要注意空指针异常System.out.println("num2 is null");}}}

四、总结

intInteger之间的区别主要体现在以下几个方面:

  1. 内存位置int存储在栈中,而Integer存储在堆中。
  2. 方法调用int不能直接调用方法,而Integer可以。
  3. 性能int的访问速度更快。
  4. null值int不能为null,而Integer可以。

理解这些区别对于写出高效、无bug的代码非常重要。

📚 领取 | 1000+ 套高质量面试题大合集(无套路,闫工带你飞一把)!

成体系的面试题,无论你是大佬还是小白,都需要一套JAVA体系的面试题,我已经上岸了!你也想上岸吗?

闫工精心准备了程序准备面试?想系统提升技术实力?闫工精心整理了1000+ 套涵盖前端、后端、算法、数据库、操作系统、网络、设计模式等方向的面试真题 + 详细解析,并附赠高频考点总结、简历模板、面经合集等实用资料!

✅ 覆盖大厂高频题型
✅ 按知识点分类,查漏补缺超方便
✅ 持续更新,助你拿下心仪 Offer!

📥免费领取👉 点击这里获取资料

已帮助数千位开发者成功上岸,下一个就是你!✨

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/3 6:34:40

MatterGen终极配置指南:无机材料AI生成的完整解决方案

MatterGen终极配置指南&#xff1a;无机材料AI生成的完整解决方案 【免费下载链接】mattergen Official implementation of MatterGen -- a generative model for inorganic materials design across the periodic table that can be fine-tuned to steer the generation towar…

作者头像 李华
网站建设 2026/4/1 2:36:30

BGE-Reranker-v2-m3 Docker优化:镜像体积精简实战

BGE-Reranker-v2-m3 Docker优化&#xff1a;镜像体积精简实战 1. 背景与挑战 随着检索增强生成&#xff08;RAG&#xff09;系统在实际应用中的广泛落地&#xff0c;重排序模型&#xff08;Reranker&#xff09;作为提升检索精度的关键组件&#xff0c;其部署效率和资源占用成…

作者头像 李华
网站建设 2026/3/26 15:11:25

LFM2-8B-A1B:手机轻松跑的8B混合AI模型

LFM2-8B-A1B&#xff1a;手机轻松跑的8B混合AI模型 【免费下载链接】LFM2-8B-A1B-GGUF 项目地址: https://ai.gitcode.com/hf_mirrors/unsloth/LFM2-8B-A1B-GGUF 导语&#xff1a;Liquid AI推出的LFM2-8B-A1B混合AI模型&#xff0c;以83亿总参数和15亿活跃参数的创新设…

作者头像 李华
网站建设 2026/3/26 15:46:58

DMA技术入门必看:嵌入式数据传输基础概念解析

DMA技术入门必看&#xff1a;嵌入式数据传输基础概念解析 在今天的嵌入式开发中&#xff0c;我们早已告别了“一个主循环走天下”的时代。随着传感器、音频模块、摄像头和高速通信接口的普及&#xff0c;系统每秒要处理的数据量动辄以千字节甚至兆字节计。如果你还在用轮询或中…

作者头像 李华
网站建设 2026/4/4 14:17:35

技术揭秘:如何用3分钟搭建大麦自动抢票系统

技术揭秘&#xff1a;如何用3分钟搭建大麦自动抢票系统 【免费下载链接】ticket-purchase 大麦自动抢票&#xff0c;支持人员、城市、日期场次、价格选择 项目地址: https://gitcode.com/GitHub_Trending/ti/ticket-purchase 还在为演唱会门票秒光而烦恼&#xff1f;你是…

作者头像 李华
网站建设 2026/4/5 7:34:52

GLM-Z1-9B:90亿参数小模型如何实现超强推理?

GLM-Z1-9B&#xff1a;90亿参数小模型如何实现超强推理&#xff1f; 【免费下载链接】GLM-Z1-9B-0414 项目地址: https://ai.gitcode.com/zai-org/GLM-Z1-9B-0414 导语&#xff1a;GLM系列推出最新90亿参数开源模型GLM-Z1-9B-0414&#xff0c;通过创新训练技术在保持轻…

作者头像 李华