Integer 装箱拆箱 比较
Integer i1 = 40; Integer i2 = 40; Integer i3 = 0; Integer i4 = new Integer(40); Integer i5 = new Integer(40); Integer i6 = new Integer(0); Integer i7 = 0 + 40; Integer i8 = i1 + 0; Integer i9 = i4 + i5; int i10 = 40; System.out.println("i1=i2\t" + (i1 == i2)); // true 对象比较 对象池中取的 System.out.println("i1=i2+i3\t" + (i1 == i2 + i3));// true 值比较 凡是在比较中有运算,都会进行拆箱操作,进行值的比较 System.out.println("i1=i7\t" + (i1 == i7)); // true //对象比较 System.out.println("i1=i8\t" + (i1 == i8)); // true //对象比较 System.out.println("i4=i7\t" + (i4 == i7)); // false 对象比较 i4是new的 i7是从对象池取的 System.out.println("i4=i5\t" + (i4 == i5)); // false 对象比较 System.out.println("i4=i5+i6\t" + (i4 == i5 + i6)); // true 值比较 凡是在比较中有运算,都会进行拆箱操作,进行值的比较 System.out.println("i1=i10\t" + (i1 == i10)); // true 值的比较
要点:
1.凡是使用加号进行相加,都会进行拆箱操作,进行数值的加减。
2.使用new Integer 的方式,是创建新的对象
3. Integer i = 40; 对于等号右侧是数值,不是对象,系统会调用Integer valueOf(int i)将其装箱,如果在-128-127之间,从常量池获取对象值得对象,否则,创建新的对象。
4.凡是在比较运算(==)中有加减运算,都会对进行拆箱操作,进行数值的比较,不是对象比较。
5.==的一方是Integer对象, 一放是数值,会对Integer 对象拆箱,进行值比较。