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