Integer 与 int 之间的 == 关系

来源:互联网 发布:移领 收钱吧 付呗 知乎 编辑:程序博客网 时间:2024/06/06 07:52


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

总结:

  1. 基本类型int和任何同数值Integer,比较结果为true
  2. 两个直接自动装箱的同数值Integer,只要在-128 ~ 127之间,比较结果就为true
  3. 除以上两种以外,都为false

以上为个人总结,欢迎指正。


0 0
原创粉丝点击