Java中的Boxing和AutoBoxing有什么区别?

Java中的Boxing和AutoBoxing有什么区别?一些Java认证书使用了两个这样的术语.他们是指与Boxing相同的东西吗?

解决方法

拳击是机制(即从int到Integer); autoboxing是编译器的功能,通过它可以为您生成装箱代码.

例如,如果你写代码:

// list is a List<Integer>
list.add(3);

然后编译器会自动为您生成装箱代码;代码中的“最终结果”将是:

list.add(Integer.valueOf(3));

关于为什么Integer.valueOf()而不是新的Integer()的说明:基本上,因为JLS这么说:)引用section 5.1.7

If the value p being boxed is true,false,a byte,or a char in the
range \u0000 to \u007f,or an int or short number between -128 and 127
(inclusive)
,then let r1 and r2 be the results of any two boxing
conversions of p. It is always the case that r1 == r2.

如果您使用“仅仅”构造函数,则无法强制执行此要求.工厂方法,如Integer.valueOf(),可以.

相关文章

Java中的String是不可变对象 在面向对象及函数编程语言中,不...
String, StringBuffer 和 StringBuilder 可变性 String不可变...
序列化:把对象转换为字节序列的过程称为对象的序列化. 反序...
先说结论,是对象!可以继续往下看 数组是不是对象 什么是对...
为什么浮点数 float 或 double 运算的时候会有精度丢失的风险...
面试题引入 这里引申出一个经典问题,看下面代码 Integer a ...