Integer自动拆箱、自动装箱
2015-02-13 10:34
633 查看
package com.tmt.test_code;
public class ZhuangChaiXiiangTest {
public static void main(String[] args) {
Integer i1=new Integer(128);
int i2=128;
Integer i3=new Integer(128);
Integer i4=128;
Integer i44=128;
Integer i5=127;
Integer i55=127;
Long i6 = 127L;
Long i66 = 127L;
Long i7 = 128L;
Long i77 = 128L;
Integer a = 1;
Integer b = 2;
Long c = 3L;
System.out.println("---new Integer(128) == int 128 ---"+(i1==i2));
System.out.println("---new Integer(128) == new Integer(128)---"+(i1==i3));
System.out.println("---Integer 127 == Integer 127---"+(i5==i55));
System.out.println("---Integer 128 == Integer 128---"+(i4==i44));
System.out.println("---Long 127L == Long 127L--"+(i6==i66));
System.out.println("---Long 128L == Long 128L--"+(i7==i77));
System.out.println("3L.equals(integer 1 + integer 2)--"+c.equals(a+b));
System.out.println("3L == (integer 1 + integer 2)--"+(c == (a+b)));
}
}
这个的运算结果是什么呢?
---new Integer(128) == int 128 ---true
---new Integer(128) == new Integer(128)---false
---Integer 127 == Integer 127---true
---Integer 128 == Integer 128---false
---Long 127L == Long 127L--true
---Long 128L == Long 128L--false
3L.equals(integer 1 + integer 2)--false
3L == (integer 1 + integer 2)--true
大家也许要问原因了:
---new Integer(128) == int 128 ---true
基本数据类型和对象间的“==”,对象会自动拆箱为基本数据类型再比较,比较的就是里面的值而不是地址
---new Integer(128) == new Integer(128)---false
对象间的“==”是比较两者在内存中的地址
---Integer 127 == Integer 127---true
---Integer 128 == Integer 128---false
---Long 127L == Long 127L--true
---Long 128L == Long 128L--false
Integer与Integer间的"=="比较,从jdk1.5开始,有“自动装箱”这么一个机制,在byte-128到127范围内(ps整型的八位二进制的表示的范围为-128到127),如果存在了一个值,再创建相同值的时候就不会重新创建,而是引用原来那个,但是超过byte范围还是会新建的对象
3L.equals(integer 1 + integer 2)--false
equals方法不处理类型间的转换
3L == (integer 1 + integer 2)--true
包装类的“==”运算在遇到算术运算的情况下会自动拆箱
public class ZhuangChaiXiiangTest {
public static void main(String[] args) {
Integer i1=new Integer(128);
int i2=128;
Integer i3=new Integer(128);
Integer i4=128;
Integer i44=128;
Integer i5=127;
Integer i55=127;
Long i6 = 127L;
Long i66 = 127L;
Long i7 = 128L;
Long i77 = 128L;
Integer a = 1;
Integer b = 2;
Long c = 3L;
System.out.println("---new Integer(128) == int 128 ---"+(i1==i2));
System.out.println("---new Integer(128) == new Integer(128)---"+(i1==i3));
System.out.println("---Integer 127 == Integer 127---"+(i5==i55));
System.out.println("---Integer 128 == Integer 128---"+(i4==i44));
System.out.println("---Long 127L == Long 127L--"+(i6==i66));
System.out.println("---Long 128L == Long 128L--"+(i7==i77));
System.out.println("3L.equals(integer 1 + integer 2)--"+c.equals(a+b));
System.out.println("3L == (integer 1 + integer 2)--"+(c == (a+b)));
}
}
这个的运算结果是什么呢?
---new Integer(128) == int 128 ---true
---new Integer(128) == new Integer(128)---false
---Integer 127 == Integer 127---true
---Integer 128 == Integer 128---false
---Long 127L == Long 127L--true
---Long 128L == Long 128L--false
3L.equals(integer 1 + integer 2)--false
3L == (integer 1 + integer 2)--true
大家也许要问原因了:
---new Integer(128) == int 128 ---true
基本数据类型和对象间的“==”,对象会自动拆箱为基本数据类型再比较,比较的就是里面的值而不是地址
---new Integer(128) == new Integer(128)---false
对象间的“==”是比较两者在内存中的地址
---Integer 127 == Integer 127---true
---Integer 128 == Integer 128---false
---Long 127L == Long 127L--true
---Long 128L == Long 128L--false
Integer与Integer间的"=="比较,从jdk1.5开始,有“自动装箱”这么一个机制,在byte-128到127范围内(ps整型的八位二进制的表示的范围为-128到127),如果存在了一个值,再创建相同值的时候就不会重新创建,而是引用原来那个,但是超过byte范围还是会新建的对象
3L.equals(integer 1 + integer 2)--false
equals方法不处理类型间的转换
3L == (integer 1 + integer 2)--true
包装类的“==”运算在遇到算术运算的情况下会自动拆箱
相关文章推荐
- Integer的自动装箱与自动拆箱注意事项
- 自动装箱与自动拆箱(jdk1.5后)(以int和Integer为例)
- 初学者对自动装箱和自动拆箱的认识(IntegerCache的缓存数组)
- Integer的自动拆箱装箱陷阱
- 巧记Integer int 自动装箱与拆箱
- integer和int(自动拆箱和装箱)
- Integer自动装箱和拆箱和比较
- int Integer 装箱 拆箱 自动装箱 自动拆箱
- 由自动装箱和拆箱引发我看Integer源码
- 黑马成员---StringBuffer,StringBuilder,Integer,自动装箱和拆箱,正则表达式:匹配,切割,替换,查找
- Java 包装类 自动装箱和拆箱--Integer
- Integer.valueOf(int i)与自动拆箱与装箱
- Integer自动拆箱与自动装箱的注意事项
- Integer自动装箱、自动拆箱
- 由自动装箱和拆箱引发我看Integer源码
- 1.4--1.5.4 泛型类A<Integer>与接口Interface A<Integer>、自动装箱/拆箱Integer->int、菱形运算符<>、数组协变、通配符?
- Integer自动装箱、拆箱问题(转)
- Integer的自动装箱与拆箱
- java自动装箱、拆箱——Integer细节
- 关于自动装箱 与自动 和自动拆箱。Integer,Boolean等