Java基础不行啊,今天做了一道题学习了一个基础知识点,就是Integer和int之间的比较问题。我们都知道int是基本的数据类型,而Integer是包装类。记录下来,防止之后忘了,测试数据如下:
Integer i01 = 127;
Integer i02 = Integer.valueOf(127);
int i05 = 127;
Integer i07 = new Integer(127);
Integer i03 = 128;
Integer i04 = Integer.valueOf(128);
int i06 = 128;
System.out.println("i01与i02:"+ (i01==i02));//true
System.out.println("i03与i04:"+ (i03==i04));//false
System.out.println("i01与i05:"+ (i01==i05));//true
System.out.println("i04与i06:"+ (i04==i06));//true
System.out.println("i01与i07:"+ (i01==i07));//false
Integer i = Integer.valueOf(127)与Integer i= 127是等价的。
1、大于-128小于等于127,Integer和int互相比较是相等的(即使用的是同一内存地址),大于128则不相等,即 相当于(-128,127],对象用常量池里面存在的值的地址
2、new一个新的的Integer对象,开辟了一块内存单位,则与谁都也不相等
3、Integer对象用“==”是比较内存地址而Integer和int比较是比较数值,所以Integer和int数值相等比较,为true, Integer自动转化成int进行比较。