以下代码如何合法,这到底有什么作用?
int i = new Integer(5);
根据 Java 语言规范,
§5.2 赋值上下文
分配上下文允许使用以下方法之一:
- 身份转换 (§5.1.1(
- 扩大的原始转换 (§5.1.2(
- 拓宽参考转换 (§5.1.5(
- 装箱转换 (§5.1.7( 后跟加宽参考转换(可选(
(- 可选(进行拆箱转换 (§5.1.8(,然后是加宽的原始转换。
您的代码演示了从Integer
到int
的拆箱转换。语言规范说它是允许的,所以它是允许的,否则你不使用Java。
有关什么是拆箱转换的更多信息,请访问此处。总而言之,它基本上是从引用类型转换为其原始对应类型。在这种情况下,Integer
是引用类型,int
是基元类型。