美文网首页
【JAVA】Java当中的包装类、装箱和拆箱

【JAVA】Java当中的包装类、装箱和拆箱

作者: Pino_HD | 来源:发表于2018-05-09 20:23 被阅读0次

    0x01 包装类

    对基本数据类型进行包装,把基本数据类型包装一个对象,从而获取更加强大的功能

    基本数据类型 包装类
    byte Byte
    short Short
    int Integer(内部覆盖到了toString方法,所以打印出来的不是地址而是具体的值)
    long Long
    float Float
    double Double
    char Character
    boolean Boolean

    0x02 装箱操作

    Integer num1 = new Integer(10);      //方法一
    Integer num2 = Integer.valueOf(10);//方法二
    

    在类中,成员变量一般使用包装类,在方法中一般使用基本数据类型。
    方法中,基本数据类型存储来栈中,而包装类存储在堆中。

    0x03 拆箱操作

    把包装类转回基本数据类型

    Integer num = new Integer(10);    //装箱
    int num2 = num.intValue();            //拆箱
    

    类似的还有doubleValue()、longValue()等等

    0x04 自动装箱与自动拆箱

    • 自动装箱
      可以直接把一个基本数据类型的值赋值给包装类对象
    Integer num = 20;
    
    • 自动拆箱
      可以直接把一个包装类对象赋值给基本数据类型的变量
    int num = Integer.valueOf(10);
    

    0x05 包装类valueOf的缓存设计

    以Integer为例子,如果数值在-128到127之间(不同的包装类数值不同),会使用缓存机制,直接从之前创建的地方获取,超出这个范围则不实用缓存,直接创建新的地址。

    相关文章

      网友评论

          本文标题:【JAVA】Java当中的包装类、装箱和拆箱

          本文链接:https://www.haomeiwen.com/subject/xiborftx.html