Java的自动装箱与自动拆箱

基本数据类型的自动装箱拆箱是自Java 5开始提供的功能。 

 

基本数据类型的自动装箱功能:

我们创建一个类的对象实例的时候:

 Class a = new Class(parameter);

 当我们创建一个Integer对象时,却可以这样:

 Integer i = 100; 

实际上,执行上代码的时候,执行了:

Integer i = Integer.valueOf(100); 

 

自动拆箱是将对象中的基本数据从对象中自动取出

 Integer i = 10; //装箱 
 int t = i;  //拆箱,实际上执行了 int t = i.intValue();

 

值得注意的地方:

  Integer的自动装箱

//在-128~127 之外的数
Integer i1 =200;
Integer i2 =200;
System.out.println("i1==i2: "+(i1==i2));
// 在-128~127 之内的数
Integer i3 =100;
Integer i4 =100;
System.out.println("i3==i4: "+(i3==i4));
 输出结果:
   i1==i2: false
    i3==i4: true

原因:(Integer源码)

public static Integer valueOf(int i) {
    if(i >= -128 && i <= IntegerCache.high)  // 没有设置的话,IngegerCache.high 默认是127
        return IntegerCache.cache[i + 128];  //在范围内返回原对象
    else
        return new Integer(i);           //不在范围内返回的是新的对象
}

 












   
posted @ 2019-07-17 18:13  德豪  阅读(303)  评论(0编辑  收藏  举报