关注「Java视界」公众号,获取更多技术干货

JAVA包装类、自动装箱、拆箱

一、为什么需要包装类

包装类的主要功能是针对基本数据类型的对象转换而实现的。若想把基本数据类型以类或者对象的形式进行处理,就需要转换成包装类。

二、有哪些包装类

基本数据类型有八种,对应的包装类也有八种,对应关系如下:

概括的说,包装类分为两种:

  1. 对象型包装类(Object直接子类):Boolean、Character
  2. 数值型包装类(Number直接子类):Integer、Byte、Long、Short、Float、Double

三、装箱、拆箱

装箱:将基本数据类型保存到包装类中(利用包装类的构造方法即可)

拆箱:从包装类中获取基本数据类型

public class Demo {
    public static void main(String[] args) {
        // 自动装箱
        Integer integer = 10;
        // 自动拆箱
        int num = integer;
        // 包装类的对象可以直接参与数学运算
        integer ++ ;
        System.out.println(num * integer);
    }
}

结果:

110

自动装箱的好处是可以实现Object接收基本数据类型的操作,例如:

public class Demo {
    public static void main(String[] args) {
        // 自动装箱(double自动装箱为Double,再向上转型为Object)
        Object obj = 16.6;
        double num = (Double) obj;
        System.out.println(num);
    }
}

结果:

16.6

 

四、包装类如何判断相等

观察以下代码及结果:

public class Demo {
    public static void main(String[] args) {
        Integer x = 10;
        Integer y = 10;
        System.out.println(x == y); // true
    }
}
public class Demo {
    public static void main(String[] args) {
        Integer x = 127;
        Integer y = 127;
        System.out.println(x == y); // true
    }
}
public class Demo {
    public static void main(String[] args) {
        Integer x = 128;
        Integer y = 128;
        System.out.println(x == y);       // false
         System.out.println(x.equals(y)); // true
    }
}

包装类判等时,若使用“==”来判断,在超过范围时就会出现false

因此以后包装类的判等都要用equals()完成。

Integer类取值和 int 类型取值一致,取值范围是从-2147483648 至 2147483647(-231至 231-1) ,包括-2147483648 和 2147483647。 

但是对于Integer类java为了提高效率,初始化了-128--127之间的整数对象,因此Integer类取值-128--127的时候效率最高。

 

补充一:Integer类型包装类

Integer类型后面赋值范围在-128---127之间

在自动装箱时对于值从–128~127之间的值,它们被装箱为Integer对象后,会存在内存中被重用,始终只存在一个对象。而如果超过了从–128到127之间的值,被装箱后的Integer对象并不会被重用,即相当于每次装箱时都新建一个Integer对象。

 

 

 

 

 

 

posted @ 2022-06-25 14:03  沙滩de流沙  阅读(38)  评论(0编辑  收藏  举报

关注「Java视界」公众号,获取更多技术干货