int _i = 1;
Integer _I = 1;
System.out.println("_i == _I :" + (_i ==_I));//true Integer自动拆箱
Integer _I2 = new Integer(1);
Integer _I2_1 = new Integer(1);
System.out.println("_I == _I2 :" + (_I ==_I2));//false 两个Integer比较不会自动拆箱
System.out.println("_i == _I2 :" + (_i ==_I2));//true
System.out.println("_I2 == _I2_1 :" + (_I2 == _I2_1));//false
Integer _I3 = 127;
Integer _I4 = 127;
System.out.println("_I3 == _I4 :" + (_I3 ==_I4));//true -128 ~ 127 的会直接使用cache里的
//Integer _I4 = 127; 即Integer _I4 = Integer.valueOf(127);
// public static Integer valueOf(int i) {
// assert IntegerCache.high >= 127;
// if (i >= IntegerCache.low && i <= IntegerCache.high)
// return IntegerCache.cache[i + (-IntegerCache.low)];
// return new Integer(i);
// }
Integer _I5 = 128;
Integer _I6 = 128;
System.out.println("_I5 == _I6 :" + (_I5 ==_I6));//false
Integer _I7 = 100;
Integer _I8 = new Integer(100);
System.out.println(_I7== _I8);//false
运行结果:
_i == _I :true
_I == _I2 :false
_i == _I2 :true
_I3 == _I4 :true
_I5 == _I6 :false
_I7 == _I8. false
总结:
- 基本类型int和任何同数值Integer,比较结果为true
- 两个直接自动装箱的同数值Integer,只要在-128 ~ 127之间,比较结果就为true
- 除以上两种以外,都为false
以上为个人总结,欢迎指正。