当前位置 博文首页 > 龙雪之樱的博客:Java:自动拆箱和装箱及包装类

    龙雪之樱的博客:Java:自动拆箱和装箱及包装类

    作者:[db:作者] 时间:2021-07-19 19:29

    自动拆箱和装箱

    ?

    自动拆箱和装箱是从JDK5.0才开始有的,它方便了基本数据类型和其对应的包装类型之间的转换。

    ?

    将一个基本数据类型的值赋给其所对应的包装类型称之为自动装箱;将一个基本数据类型包装类类型的值赋给其所对应的基本数据类型称之为自动拆箱。

    ?

    ?

    ?

    ?

    包装类数据缓存

    ?

    1.Java对部分经常使用的数据采用缓存技术,即第一次使用该数据则创建该数据对象并对其进行缓存,当再次使用等值对象时直接从缓存中获取,从而提高了程序执行性能。

    ?

    ?

    注:Java中的==有两种作用:如果是基本数据类型则用于判断其值是否相等;如果为引用类型则用于判断两者的地址是否相同。此处ij均为引用类型,但因为其值都是12,所以ij引用的是同一块地址,所以使用==判断时其结果为true

    ?

    2.Java中只是对部分基本数据类型对应包装类的部分数据进行了缓存:

    ?

    byte、shortintlong所对应包装类的数据缓存范围为 -128~127(包括-128127);

    ?

    ?

    float和double所对应的包装类没有数据缓存范围;

    ?

    ?

    char所对应包装类的数据缓存范围为 0~127(包括0127);

    ?

    ?

    boolean所对应包装类的数据缓存为truefalse

    ?

    ?

    ?包装类中equals方法?

    ?

    基本数据类型包装类中的equals方法用于比对相同包装类中的值是否相等,如果两者比较的包装类类型不同则返回false;

    char类型除外,character比的是地址

    ?

    注:

    红框:aIntegerbInteger的值超出了int对应包装类的缓存范围,所以aInteger==bInteger返回false,但是由于两者值都是128并且都是Integer类型,所以aInteger.equals(bInteger)返回true

    蓝框:aIntegercShort的值都是128,但是由于两者数据类型不同,所以aInteger.equals(cShort)返回false

    ?

    包装类中parseXXX方法


    基本数据类型包装类中的parseXXX(String s)方法用于将字符串类型数据转换为相应的基本数据类型;

    注意:char类型包装类Character没有相应的parseXXX方法。

    ?

    ?

    ?

    ?

    cs