美文网首页
装箱和拆箱

装箱和拆箱

作者: EricDD | 来源:发表于2022-11-29 22:34 被阅读0次

    [TOC]

    装箱和拆箱

    包装类

    将基本类型包装起来,使基本类型拥有对象的性质。

    基本类型 包装类
    byte Byte
    short Short
    int Integer
    long Long
    char Character
    float Float
    double Double
    boolean Boolean

    自动拆箱与自动装箱

    Integer integer = 10; //自动装箱
    // Integer integer = new Integer(10); jdk1.5之前写法
    int in = integer; //自动拆箱
    System.out.println(integer);
    System.out.println(in)
    
    //反编译后代码
    Integer integer=Integer.valueOf(10);
    int i=integer.intValue();
    

    自动装箱是通过valueOf()方法实现,自动拆箱则是通过intValue()实现。
    同理可查看其他几种基本类型。

    使用场景

    • 将基本类型放入集合类

      List<Integer> integerList = new ArrayList<>();
      for (int j = 0; j < 10; j++) {
          integerList.add(j);
      }
      //反编译后代码
      ArrayList localArrayList = new ArrayList();
      for (int i13 = 0; i13 < 10; i13++) {
          localArrayList.add(Integer.valueOf(i13)); //装箱
      }
      
    • 包装类与基本类型比较

      Integer a=1;
      System.out.println(a==1);
      //反编译后代码
      Integer localInteger2 = Integer.valueOf(1); //装箱
      System.out.println(localInteger2.intValue() == 1);//拆箱
      
    • 包装类型运算

      Integer aa = 1;
      Integer bb = 1;
      System.out.println(aa+bb);
      //反编译后代码
      Integer localInteger3 = Integer.valueOf(1);//装箱
      Integer localInteger4 = Integer.valueOf(1);
      System.out.println(localInteger3.intValue() + localInteger4.intValue());//拆箱
      
    • 三目运算符

      boolean flag = true;
      Integer ii = null;
      int jj = 1;
      Integer k = flag ? ii : jj;
      //反编译后代码 
      int i14 = 1;
      Object localObject = null;// null拆箱,空指针
      int i15 = 1;
      Integer localInteger5 = Integer.valueOf(i14 != 0 ? ((Integer)localObject).intValue() : i15);//拆箱
      //抛出空指针异常
      
    • 函数参数与返回值

      //自动拆箱
      public int getNum1(Integer num) {
          return num;
      }
      //自动装箱
      public Integer getNum2(int num) {
          return num;
      }
      

    相关文章

      网友评论

          本文标题:装箱和拆箱

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