Java的自动拆箱装箱浅谈

172 阅读1分钟

「这是我参与2022首次更文挑战的第15天,活动详情查看:2022首次更文挑战」。

一、包装类的定义

int,long等内置类型在我们在开发中并没有经常使用,在实体中我们都定义的是Integer,Long等包装类型。包装类(Integer,Long,Byte,Double,Float,Short)都是抽象类Number的子类,boolean的包装类是Boolean,char的包装类是Character。编译器把内置类型变为包装类型的过程称为装箱,由包装类型变为内置类型的过程被称为拆箱。

二、Number类的介绍

image.png Number类中可以看到包含了各个内置类型的toValue函数,不同的包装类型对这些函数有不同的实现。

public static void main(String[] args) {
    Integer a = new Integer(8);
    int i = a.intValue();
    System.out.println(i);
}

可以看出Interger重写了intValue,返回一个int值。其它包装类也有类型的重写。

public static void main(String[] args) {
    Integer a = 5;
    a = a +10;
    System.out.println(a);
}

image.png 在一开始声明的时候,a进行了装箱,在第二行进行运算的时候,进行了自动拆箱,拆箱后进行了运算。

三、Boolean类介绍

image.png Boolean我们并没有经常使用,开发中我们定义基本都是用Integer来表示状态,而不是用Boolean。parseBoolean用于将字符串转换为boolean。

四、Character类的介绍

image.png Character中包含个-各种很实用的静态方法,Character.isLowerCase用于判断是否为小写,此外还有用于判断是否为空格,判断是否为大写的方法等等。

public static void main(String[] args) {
    Character c = 'c';
    System.out.println(c.charValue());
    System.out.println(Character.isLowerCase(c));
    System.out.println(Character.isSpaceChar(c));
}

开发中我们对Character的使用也比较少,即使是原始类型char的使用也比较少。 image.png