在一个对象数组上使用for-each - "Integer [] array" - 为什么"for(int i:array)"工作?

The*_*ing 1 java arrays foreach primitive object

当我循环遍历一个对象数组时,为什么使用原始数据类型在第二个"for-each"循环中工作.是否有一个回流到幕后发生的原始对象的原始对象?

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);

  }  

    }
}
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 5

这是自动拆箱,就是这样.没有必要迭代任何东西来证明:

Integer x = 10;
int y = x;
Run Code Online (Sandbox Code Playgroud)

从Java语言规范,第5.1.8节:

拆箱转换将引用类型的值转换为基本类型的相应值.

(还有一些细节,但它主要只是转换列表.)

第5.2节将取消装箱转换称为在分配转换的上下文中可用.