Java中装箱和自动装箱的区别是什么?
Java中装箱和自动装箱的区别是什么?一些Java认证书使用了两个这样的术语。它们指的是装箱吗?在我的理解中,“装箱”的意思是“围绕一个基本值显式地构造一个包装器”。例如:Java中装箱和自动装箱的区别是什么?,java,boxing,Java,Boxing,Java中装箱和自动装箱的区别是什么?一些Java认证书使用了两个这样的术语。它们指的是装箱吗?在我的理解中,“装箱”的意思是“围绕一个基本值显式地构造一个包装器”。例如: int x = 5; Integer y = new Integer(x); //or Integer.valueOf(x); Integer x = 5; 同时,“自动装箱”意味着“围绕原始值隐式构造包装器”。例如: int x = 5; Integer y = new Integer(x); //or Integer
int x = 5;
Integer y = new Integer(x); //or Integer.valueOf(x);
Integer x = 5;
同时,“自动装箱”意味着“围绕原始值隐式构造包装器”。例如:
int x = 5;
Integer y = new Integer(x); //or Integer.valueOf(x);
Integer x = 5;
自动装箱是Java编译器在原语类型与其对应的对象包装器类之间进行的自动转换。例如,将int转换为整数,将double转换为double,等等。如果转换方向相反,则称为取消装箱 装箱是一种机制(即从
int
到Integer
);自动装箱是编译器的一项功能,通过它可以为您生成装箱代码
例如,如果您使用代码编写:
// list is a List<Integer>
list.add(3);
关于为什么
Integer.valueOf()
而不是newinteger()
:基本上,因为JLS这么说:)引用:
如果要装箱的值p为true、false、字节或
范围从\u0000到\u007f,或介于-128和127之间的整数或短数
(包括),然后让r1和r2为任意两个装箱的结果
p。通常情况下,r1==r2
如果使用“纯”构造函数,则无法强制执行此要求。工厂方法,例如Integer.valueOf()
,可以。- 取消装箱是从包装类到原始数据类型的转换。当你传递一个整数时,应该是int
- 自动装箱是从原始数据类型到相应包装类的自动转换。当你传递一个整数时,你需要一个整数对象
Integer i=新整数(1)代码>和此自动装箱整数i=1代码>。然而,这只是不相关的语义。自动装箱是自动装箱,对吗?您可以使用Integer.valueOf
手动装箱int
,也可以将int
值指定给Integer
变量,该变量将自动装箱。@uuiui:不,装箱时主要称为装箱,装箱时称为取消装箱。增量也不主要称为减量。