Java面试八股之int和Integer有什么区别

  1. int和Integer有什么区别

基本类型与包装类:

int:int是Java中的一个基本数据类型(primitive type),用于表示整数。它直接存储数值,没有独立的对象实例,不涉及内存管理。

Integer:Integer是Java为int类型提供的包装类(wrapper class),位于java.lang包下。Integer对象封装了一个int值,并提供了额外的方法和功能。

内存占用与性能:

int:作为基本类型,int在内存中占用固定的32位(4字节),不需要额外的内存开销(如对象头、引用等),在大量数据处理或内存敏感的场景下更高效。

Integer:作为对象,Integer除了存储int值外,还包括对象头信息和可能的引用指针,因此其内存占用大于int。创建和操作Integer对象涉及内存分配和垃圾回收,性能略低于直接使用int。

自动装箱与拆箱:

Java SE 5引入了自动装箱(autoboxing)和拆箱(unboxing)机制,使得int和Integer之间可以自动转换:

装箱:将int值自动转换为Integer对象,如Integer i = 123;。

拆箱:将Integer对象自动转换为int值,如int x = i.intValue();或直接参与算术运算。

null值处理:

int:基本类型int不能赋值为null,必须有一个确定的数值。

Integer:作为对象,Integer可以被赋值为null,表示没有具体的整数值。

集合类操作:

int:由于int是基本类型,不能直接放入需要对象引用的集合类(如ArrayList<Integer>、HashMap<Integer, String>等)中。

Integer:Integer对象可以轻松地放入集合类中,便于进行集合操作。

常量池与缓存:

对于Integer对象,当其值在-128到127(包括两端)之间时,Java会重用已存在的对象,以减少内存消耗。这意味着对于这个范围内的值,多个Integer对象可能指向相同的内存地址。这种现象通常称为“Integer缓存”或“Integer常量池”。

方法与功能:

int:作为基本类型,int本身不具备额外的方法和功能,仅支持基本的算术运算和比较。

Integer:Integer类提供了许多有用的方法,如compareTo()进行整数比较、toString()转换为字符串、valueOf()解析字符串为Integer、decode()解析各种整数表示法等,还支持equals()、hashCode()等对象方法。

 如果大家需要视频版本的讲解,欢迎关注我的B站:

  • 35
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值