自动装箱和拆箱有什么区别,何时使用?

时间:2018-07-23 13:40:14

标签: java autoboxing unboxing

大家好,我还是java的初学者,有人可以向我解释自动装箱和取消装箱的用途以及何时使用该装箱有何区别?

          //this is my sample code

     ArrayList<Double> listOfDoubles = new ArrayList<Double>();
     for(double i = 0.0; i <= 10.0; i += 0.5) {
      listOfDoubles.add(Double.valueOf(i)); // this why we could use double value of?
     }

2 个答案:

答案 0 :(得分:0)

对于double而言,自动装箱意味着(不进行任何强制转换,也没有显示我们正在做的任何事情)将double值(原始类型)转换为Double值(相应的对象类型)。

自动拆箱相反:将Double值隐式转换为double值。

当您要将原语转换为对象或将对象转换为原语时,可以使用它。通常,当想要在列表中存储双精度值时,列表不能存储基元,但它们可以存储对象,因此您可以将双精度转换为双精度,然后将其存储在列表中。在程序中没有明确说明,“嘿,我的double,在将其存储到可以容纳Doubles的位置之前,将其设置为Double!”

  

listOfDoubles.add(Double.valueOf(i)); //这就是为什么我们可以使用double   的价值?

您可以因为为什么不这样做。完全不需要调用Double.valueOf(i),因为如果您没有显式地执行编译器,则编译器将隐式地执行该操作。

不需要,但不是禁止的。值得注意的是,Java 1.5引入了自动装箱和拆箱功能。它以前不存在。因此,以前,您需要一种在需要时对值进行装箱和拆箱的方法。 Double.valueOf()就是这样。

突然禁止它并破坏使用它的较旧程序是没有意义的,只是因为现代Java中不再需要它。

答案 1 :(得分:0)

取消装箱是将对象类型的原始值(或装箱的类型)转换为原始类型(从Integer到int,从Double到Double)。

自动装箱意味着可以将原语自动转换为装箱或对象类型。

int i = 4;
Integer j = i;

变量j是包含值4的Integer对象类型。

在取消装箱时要小心,因为空对象不能转换为原始值。

相关问题