Java中如果使用 == 双等于比较对象,等于比较的是两个对象的内存地址,也就是比较两个对象是否是同一个对象
但是Integer类型, 对于-128-127之间的数是缓冲区取的,所以用等号比较是一致的。但对于不在这区间的数字是在堆中new出来的, 地址空间不一样,也就不相等。所以,以后碰到Integer比较值时,最好不要偷懒直接用 == , 而需要用intValue(),或equals()
equals() 比较对象中所包含的内容是否相同
Java Integer比较详解
本文详细解释了Java中Integer对象的比较方式,特别是针对-128到127区间内的整数缓存如何影响Integer对象的==比较结果,并强调了在进行Integer值比较时应该使用intValue()或equals()方法。
Java中如果使用 == 双等于比较对象,等于比较的是两个对象的内存地址,也就是比较两个对象是否是同一个对象
但是Integer类型, 对于-128-127之间的数是缓冲区取的,所以用等号比较是一致的。但对于不在这区间的数字是在堆中new出来的, 地址空间不一样,也就不相等。所以,以后碰到Integer比较值时,最好不要偷懒直接用 == , 而需要用intValue(),或equals()
equals() 比较对象中所包含的内容是否相同

被折叠的 条评论
为什么被折叠?
