[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; }
网友评论