总的来说就是:装箱就是自动将基本数据类型转换为包装器类型;拆箱就是自动将包装器类型转换为基本数据类型。一共有八种基本数据类型都有对应“封箱”他们分别是:
基本数据类型 包装类
byte Byte
boolean Boolean
short Short
char Character
int Integer
long Long
float Float
double Double
方法/步骤
-
1、首先我们要建立一个测试类。在测试类中我们可以看到“Integer integer = new Integer(520);”这里是最常用的方法。如果单纯是这种方法就不会有“封箱”和“拆箱的介绍了。
-
下面我们来看一个“封箱”。这里“Integer integer = 520;”并没有按照常规方法“new”一个对象出来,而是直接赋值,其实自动装箱就是编译器帮助我们改进代码。也就是说“Integer integer = 520;”就间接等于“Integer integer = new Integer(520);”
-
那上面说过“封箱”什么叫做“拆箱”呢?自动拆箱也是编译器帮助我们改进代码。把一个对象赋值给一个“int”类型的值也就是说“int c = integer2;” 实现的是“integer2.intValue”调用了“intValue”方法。可以看到最后能够直接输出结果。
-
下面我们来看个有趣的事情。定义了“d1”和“d2”,分别直接相等和用“equal”方法相等。我们都知道结果一个是“false”一个是“true”。重要的是下面这个
从图中可以看到“d3”和“d4”不管是直接相等还是“equal”方法相等。结果都是“true”。而“d5”和“d6”就不是这样的结果了。其原因在代码中的注释也解释过了就是“[-128——127]为了方便仍然当作基本数据类型整数来处理”。如果在这个数的范围内,结果都是“true”,超过了范围就会一个是“false”,一个是“true”。
-
转自:https://jingyan.baidu.com/article/7c6fb428291a6380642c90fc.html
包装类的另外一个比较有用的是可以将String 字符串类型转换为相应的基本数据类型。
下面以将String转为int为例:
public static void main(String[] args) {
String string="10";
String string2="10a";
try{
int a=Integer.parseInt(string);
int b=Integer.parseInt(string2);
System.out.println(++a);
}catch (Exception e) {
e.printStackTrace();
}
}
如果在上述方法中str="10a";则在调用parseInt方法时候会产生NumberFormatException异常,见JDK API中对该方法的描述:
public static int parseInt(String s) throws NumberFormatException
注:index 包装类 返回的基本数据类型 方法名
1 Integer int static int Integer.parseInt(Sting s)
2 Character char static char Character.parseChar(String s)
3 Float float static float Float.parseFloat(String s)
4 Dobule double static double Double.parseDouble(String s)
5 Byte byte static byte Byte.parseByte(String s)
6 Short short static short Short.parseShort(String s)
7 Long long static long Long.parseLong(String s)
8 Boolean boolean static boolean Boolean.parseBoolean(String s)