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

前端之家收集整理的这篇文章主要介绍了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相关文章