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 对象拆箱,进行值比较。
posted @ 2016-04-28 15:31  lion85  阅读(264)  评论(0编辑  收藏  举报