面试官:int和Integer的差异在哪?为什么要有包装类?

前言

Java 是一种强数据类型的语言,因此所有的属性必须有一个数据类型。就像麦德龙超市一样,想要进去购物,先要有一个会员卡才行(刷卡入内)。

PS:Java 10 有了局部变量类型推导,可以使用 var 来替代某个具体的数据类型,但在字节码阶段,Java 的变量仍有着明确的数据类型,且局部变量类型推导有着很多限制和不完善之处,也不是目前主流的应用版本,所以这里不做深入讨论。

回到主题,要理解 int 和 Integer 的区别,要先从 Java 的基础数据类型说起。

基本数据类型

在 Java 中,一共有 8 种基本类型(primitive type),其中有 4 种整型、2 种浮点类型、1 种用于表示 Unicode 编码的字符类型 char 和 1 种用于表示真假值的 boolean 类型。

  • 4 种整型:int、short、long、byte
  • 2 种浮点类型:float、double
  • 字符类型:char
  • 真假类型:boolean

基本数据类型是指不可再分的原子数据类型,内存中直接存储此类型的值,通过内存地址即可直接访问到数据,并且此内存区域只能存放这种类型的值,int 就是 Java 中一种常用的基础数据类型

包装类及其作用

因为 Java 的设计理念是一切皆是对象,在很多情况下,需要以对象的形式操作,比如 hashCode() 获取哈希值,或者 getClass() 获取类等。

包装类的作用

在 Java 中每个基本数据类型都对应了一个包装类,而 int 对应的包装类就是 Integer包装类的存在解决了基本数据类型无法做到的事情泛型类型参数、序列化、类型转换、高频区间数据缓存等问题

基础类型 包装类型

int 和 Integer 的区别

int 和 Integer的区别主要体现在以下几个方面:

  1. 数据类型不同:int 是基础数据类型,而 Integer 是包装数据类型;
  2. 默认值不同:int 的默认值是 0,而 Integer 的默认值是 null;
  3. 内存中存储的方式不同:int 在内存中直接存储的是数据值,而 Integer 实际存储的是对象引用,当 new 一个 Integer 时实际上是生成一个指针指向此对象;
  4. 实例化方式不同:Integer 必须实例化才可以使用,而 int 不需要;
  5. 变量的比较方式不同:int 可以使用 == 来对比两个变量是否相等,而 Integer 一定要使用 equals 来比较两个变量是否相等。

总结

Integer 是 int 的包装类,它们的区别主要体现在 5 个方面:数据类型不同、默认值不同、内存中存储的方式不同、实例化方式不同以及变量的比较方式不同。包装类的存在解决了基本数据类型无法做到的事情泛型类型参数、序列化、类型转换、高频区间数据缓存等问题。

#Java开发实习##Java##学习路径#
全部评论
感谢大佬分享!!!!
点赞 回复 分享
发布于 2022-01-12 20:52

相关推荐

1. Guava Cache 和 Caffeine 分别使用了什么缓存淘汰算法​2. 实际项目里本地缓存命中率大概多少​3. 引入缓存带来的风险和解决方案​4. 缓存的读写策略​5. 如何保证缓存和数据库一致性​6. “先写缓存,再异步批量刷库”方案,除一致性外还有哪些潜在风险​7. 如何拦截恶意请求,设计防护手段避免缓存被恶意利用​8. 布隆过滤器原理,如何解决缓存穿透​9. 布隆过滤器误判概率大概多少,如何估计​10. 定时任务 5 分钟一轮询,任务执行超 5 分钟时,如何保证状态不丢失、不阻塞调度​11. 分布式 RPC 为什么要自定义协议,而不用 HTTP​12. 单机 QPS 1w+ 这个数据是怎么统计/得到的​13. RPC 项目目前瓶颈在哪​14. 了解哪些 HTTP 版本,各版本特性​15. HTTP 队头阻塞是什么​16. 队头阻塞是否只存在于 HTTP 层面​17. TCP 会不会存在对应阻塞问题​18. HTTP3 如何解决 HTTP2 在 TCP 上的队头阻塞​19. 为什么 HTTP3 基于 QUIC,而不继续在 TCP 上优化​20. TCP 如何实现可靠传输和流量控制​21. TCP 发送窗口如何根据接收窗口和拥塞情况动态调整,窗口结构如何维护变化​22. TCP 如何判断报文丢失,什么条件触发重传​23. TCP 除重传计时器外还有哪些计时器​24. AI 项目中降低大模型幻觉的具体优化方法​25. 大模型产生幻觉的底层技术原因​26. 算法题:Java 原生数组实现栈,实现常用操作
查看26道真题和解析
点赞 评论 收藏
分享
4.1投递并约面4.2面试无手撕,30分钟,基本就是问实习和项目,外加点场景题,八股相对来说比较少主要是结合实习来问1、自我介绍2、AI生成代码速度快但质量不稳定,你会选择效率还是质量?为什么?3、平时写代码都用过什么AIcoding工具4、用这些工具写代码你感觉代码质量如何,可用性可行性怎么样,写完之后自己会去学习吗5、我看你简历用了实习公司内部的线程池,那Java原生线程池中的核心线程数和最大线程数如何根据业务场景来评估6、ThreadLocal内存泄漏7、引入TTL解决实习遇到的问题的核心原理8、Redission看门狗机制9、where a=1 and c=3,联合索引是abc,索引会生效吗,为什么,c不生效的话a会生效吗10、实习中这个业务用到了策略模式和工厂模式,那在Spring容器中你是怎么管理这些策略实现类的注入的,整个流程讲一下11、在商品详情页场景下,怎么解决缓存击穿热带key过期的问题,结合业务说解决方法12、G1垃圾回收器相对于CMS的优势是什么13、CAS的ABA问题解释一下,如何避免这个问题14、SpringBoot的自动装配原理15、实习的这个定时任务优化是怎么优化的,技术层面,数据库层面怎么优化的16、实习中SAP和数据库的数据同步是怎么处理的,怎么保证他唯一性和一致性并且不会出现脏数据17、实习业务除了用到了Redis锁防止并发问题,那在数据库层面你会怎么解决这个超卖价格覆盖呢,怎么设计18、举一个实习中具体优化查询的案例19、如果是让你做的这个需求的话·,你在做表设计的时候你会考虑这些索引的创建吗,还是发现问题之后再去优化呢20、你那个agent项目文档分块是怎么分块,为什么要这么分,有没有更好的分块方法21、除了项目的向量数据库还了解其他向量数据库吗,你为什么要选择这个向量数据库22、如果业务方向调整,AI的回答风格从严谨变到幽默,这个系统如何实现不重启就可以生效呢23、Nacos和Apollo了解吗24、Java怎么调用Python25、用过openclaw吗,用来干嘛(我说拿来炒股,面试官笑了,问我效果怎么样)26、openclaw除了炒股还能用到哪些场景呢27、AI动漫、AI短剧、AI漫剧了解多少28、AI除了内容创作之外还有其他作用吗29、反问:有二面吗30、反问:具体业务
查看28道真题和解析
点赞 评论 收藏
分享
评论
1
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务