java Integer判断相等==和equals

时间:2023-02-09 16:18:41

java中Integer和int类型操作时,会自动拆箱装箱,我们操作string相等判断的时候会注意==和equals的区别,但是在做Integer的时候,就有人不注意了。不确定的,自己写个测试代码,测试Integer a3=3 和Integer b3=3 时,a3==b3是true,就认为Integer可以用==判断相等。这个测试其实是不完全的。

因为Integer ah=128 和Integer bh=128 就不==。这个就跟java的内存有关系了。

如果整型字面量的值在-128到127之间,那么不会new新的Integer对象,而是直接引用常量池中的Integer对象,所以a3==b3的结果是true,而ah==bh的结果是false。


详细对源码的解析请参照博客  http://blog.csdn.net/jackfrued/article/details/44921941