别用==比较包装类

前两天工作把代码合并到主分支时,被公司的安全监测机制拦截了,一看是因为用了==来比较Integer类型。

在阿里开发手册中,有这样一条:在包装类进行比较的时候,要用equals方法,而不是== 具体的原因下面也讲解的很清楚,就是因为对象会复用,导致比较结果出错。

别用==比较包装类_第1张图片


下面看一下示例。==只有在基本数据类型的比较上,是直接比较值,否则比较的是两个对象的地址。

  • 127在[-128,127]区间内,在IntegerCache.cache上产生,可以被复用,因此x和y是一个对象,地址相同,返回true。
  • 128不属于此区间,不会被复用,因此a和b是两个对象,地址不同,返回false。
  • 另外,其实也可以看到IDEA有提醒我们,用equals替换掉==
    别用==比较包装类_第2张图片

你可能感兴趣的:(java学习,java)