包装类这颗语法糖,其实并不甜

本文探讨了Java包装类在实际使用中可能出现的问题,包括与基本类型的相等性判断差异、性能下降、不易察觉的错误及令人困惑的API设计。文章通过实例展示了包装类可能导致的不一致行为,强调了避免不必要的对象创建以提高性能,并提供了最佳实践建议,如在特定场景下使用包装类或基本类型。
摘要由CSDN通过智能技术生成

历史文章推荐:

  1. 你真的了解时间吗
  2. 细数ThreadLocal三大坑,内存泄露仅是小儿科
  3. Java 8 ConcurrentHashMap源码中竟然隐藏着两个BUG
  4. ConcurrentHashMap中有十个提升性能的细节,你都知道吗?
  5. HashMap面试,看这一篇就够了
  6. 七种方式教你在SpringBoot初始化时搞点事情

包装类在Java 5中和泛型一起引入,引入包装类的原因有两点:

  1. 解决无法创建基本类型泛型集合的问题
  2. 加入对基本类型为null这个语义的支持

并提供boxingunboxing的语法糖,让编译器支持基本类型和包装类的自动转化,减少开发者的工作量。但是经常有同学因为误用包装类导致惨烈的线上问题,在使用包装类的时候务必需要注意一下四点:

  1. 与基础类截然不同的==equals语义
  2. 糟糕的性能
  3. 不易察觉的NPE问题
  4. 令人疑惑的API设计

1. 相等还是不相等?这是个问题

比如以下代码片段

class Biziclop {
   
    public static void main(String[] args) {
   
        System.out.println(new Integer(5) == new Integer(5)); // false
        System.out.println(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值