jdk新特性之自动装箱与自动拆箱

本文介绍了Java中的自动装箱和拆箱特性,详细讲解了从jdk1.5开始,如何在基本数据类型和其对应的包装类之间进行自动转换。同时,探讨了包装类带来的好处,如简化数据类型转换,方便字符串与数字之间的互换,以及Integer类内部的缓冲数组机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 包装类:

  1. java是面向对象的语言,任何事物都可以使用类进行描述,sun就使用了一些类描述java中八种基本数据类型数据

2. 八大基本数据类型对应的包装类

      基本数据类型                包装类

        byte                  Byte

        short                  Short

        int                   Integer

        long                  Long

 

        double                Double

        float                 Float

 

        char                  Character

 

        boolean               Boolean

 

3. 基本数据类型有了包装类的好处:

3.1在jdk1.5之前,并没有包装类,当需要把引用数据类型当成基本数据类型使用时,需要手动进行转换;jdk1.5之后,有了包装了,基本数据类型和引用数据类型可以进行自动转换。

3.2可以把 字符串转换成数字类型的数据使用,也可以把数字类型数据转换成字符串使用

3.3可以把字符串当成对应的进制数据自动进行转换。

 

4. 自动拆装箱

4.1 自动装箱:将基本数据类型的值直接赋值给引用数据类型(包装类)的过程,称为自动装箱
    1. &bsp; &bsp;it ——>> &bsp;Iteger
4.2 自动拆箱:将引用数据类型(包装类)数据直接赋值给基本数据类型的过程,称为自动拆箱
    1. &bsp; Iteger ——>> it

 

5. Integer底层维护的是缓冲数组

      Integer 内部维护了缓冲数组,该缓冲数组存储的是-128~127,这些数据在一个数组中。 如果你获取的数据是这个范围内,那么就直接从该缓冲区中获取对应的数据。
public static void main(String[] args) {
    String str1 = "10";
    // 字符串转数字
    int data1 = Integer.parseInt(str1) + 1;
    System.out.println("字符串转数字:" + data1); // 11

    // 把数字转换成字符串
    String string1 = Integer.toString(data1);
    System.out.println("数字转字符串:" + string1); // "11"

    // 把字符串当成对应进制的数据使用
    String str2 = "10";
    int data2 = Integer.parseInt(str2, 2); // 二进制
    System.out.println("十进制的10转换成二进制:" + data2);//2
    //  自动装箱:把基本数据类型包装成引用数据类型
    int data3 = 2;
    Integer str3 = data3;//将基本数据类型的值直接赋值给引用数据类型(包装类)的过程,称为自动装箱

    // 自动拆箱:把引用数据类型转换成基本数据类型
    Integer integer = new Integer(2);
    int data4 = integer;// 将引用数据类型(包装类)数据直接赋值给基本数据类型的过程,称为自动拆箱

    System.out.println("自动装箱:" + str3 + "  自动拆箱:" + data4);//2 2


    // Integer 内部维护了缓冲数组,该缓冲数组存储的是-128~127,这些数据在一个数组中。 如果你获取的数据是这个范围内,那么就直接从该缓冲区中获取对应的数据。
    Integer data5 = 127;
    Integer data6 = 127;
    System.out.println("是同一个对象吗?" + (data5 == data6));//true
    Integer data7 = 128;
    Integer data8 = 128;
    System.out.println("是同一个对象吗?" + (data7 == data8));//false
    Integer data9 = -128;
    Integer data10 = -128;
    System.out.println("是同一个对象吗?" + (data9 == data10));//true
    Integer data11 = -129;
    Integer data12 = -129;
    System.out.println("是同一个对象吗?" + (data11 == data12));//false
}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值