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

Java 自动装箱和取消装箱有什么区别,何时使用?,java,autoboxing,unboxing,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

大家好,我还是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?
     }
//这是我的示例代码
ArrayList listOfDoubles=新的ArrayList();

对于(double i=0.0;i对于double,自动装箱意味着隐式地(没有强制转换,也没有任何显示我们正在做的事情)将原语类型的double值转换为对应对象类型的double值

int i = 4;
Integer j = i;
自动取消装箱则相反:将双精度值隐式转换为双精度值

当您想将原语转换为对象或将对象转换为原语时,可以使用它。通常,当您想在列表中存储双精度值时,列表不能存储原语,但可以存储对象,因此您可以将双精度值转换为双精度值,并将其存储在列表中。无需在程序中明确说明,“嘿,我的双人间,在你把它放在可以收双人间的地方之前,先把它做成双人间!”

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

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

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


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

取消装箱是将对象类型原语值(或装箱类型)转换为它的原语对应项(整数到整数,双精度到双精度)

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

int i = 4;
Integer j = i;
变量j是包含值4的整数对象类型

取消装箱时要小心,因为空对象无法转换为基本值。

您读过了吗?