当我在对象数组上循环时,为什么在第二个“for-each”循环中使用原始数据类型有效。是否有转换回在幕后发生的 Integer 对象的原始等价物?
import java.util.Arrays;
import java.util.Collections;
public class CodeTestingClass
{
public static void main(String[] args)
{
Integer[] array = {1,2,3,4,5};
Collections.rotate(Arrays.asList(array), 1);
System.out.println(Arrays.toString(array) + "\n" );
for(Integer i : array)
{
System.out.print(i);
}
System.out.print("\n");
for(int i : array)
{
System.out.print(i);
}
}
}
最佳答案
自动拆箱,仅此而已。无需迭代任何内容即可证明:
Integer x = 10;
int y = x;
来自 Java 语言规范,section 5.1.8 :
Unboxing conversion converts values of reference type to corresponding values of primitive type.
(那里还有更多详细信息,但主要只是转化列表。)
Section 5.2指出拆箱转换在分配转换的上下文中可用。
关于java - 在对象数组上使用 for-each - "Integer[] array"- 为什么 "for(int i : array)"有效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3327137/