Java判断两个Integer类型的值是否相等

当数值范围是[-128,127],比如a=12,b=12,用==去比较得出的是true

当数值范围超出[-128,127],比如a=12345,b=12345,用==得出的结果是false。

因为超出范围时,Integer会去new一个对象,比较的是两个对象的地址。

当用“==”进行比较时,jvm默认是比较数据在java堆的地址。int是一种基本数据类型,jvm会自动将Integer转成int数值进行比较。

在Integer类中,有一个内部静态类IntegerCache ,用来支持自动拆箱和装箱。

比较两个Integer的值是否相同,方法比较多,推荐用Objects.equals(a, b),这个还可以避免一些空指针问题的出现。