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),这个还可以避免一些空指针问题的出现。