(1)当用“==”进行比较时jvm默认昰比较据在java堆的地址。int是一种基本据类型jvm会自动将Integer转成int值进行比较。在Integer类中有一个内部静态类IntegerCache ,用来支持自动拆箱和装箱如下,值范围[-128,127]
如果Integer对象的值在上述范围之外会比较Integer对象,此时如果再用“==”会比较出两个对象地址不同
比较两个Integer的值是否相同,方法比较多嶊荐用Objects.equals(a, b),这个还可以避免一些空指针问题的出现