1、首先我们要建立一个测试类。在测试类中我们可以看到“Integer integer = new Integer(520);”这里是最常用的方法。如果单纯是这种方法就不会有“封箱”和“拆箱的介绍了。
2、下面我们来看一个“封箱”。这里“Integer integer = 520;”并没有按照常规方法“new”一个对象出来,而是直接赋值,其实自动装箱就是编译器帮助我们改进代码。也就是说“Integer integer = 520;”就间接等于“Integer integer = new Integer(520);”
3、那上面说过“封箱”什么叫做“拆箱”呢?自动拆箱也是编译器帮助我们改进代码。把一个对象赋值给一个“int”类型的值也就是说“int c = integer2;” 实现的是“integer2.intValue”调用了“intValue”方法。可以看到最后能够直接输出结果。
4、下面我们来看个有趣的事情。定义了“d1”和“d2”,分别直接相等和用“equal”方法相等。我们都知道结果一个是“false”一个是“true”。重要的是下面这个
5、从图中可以看到“d3”和“d4”不管是直接相等还是“equal”方法相等。结果都是“true”。而“d5”和“d6”就不是这样的结果了。其原因在代码中的注释也解释过了就是“[-128——127]为了方便仍然当作基本数据类型整数来处理”。如果在这个数的范围内,结果都是“true”,超过了范围就会一个是“false”,一个是“true”。