java - 在对象数组上使用 for-each - "Integer[] array"- 为什么 "for(int i : array)"有效?

标签 java arrays object foreach primitive

当我在对象数组上循环时,为什么在第二个“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/

相关文章:

java - Eclipse Gradle项目设置伪造错误通知

java - 设置 Log4jContextSelector 的属性有什么不同吗

java - Hibernate 不创建外键约束

c++ - 将数组中的元素数量传递给函数?

java - Txt 文件转换为双二维数组

javascript - 在包含对象数组的对象内定义方法(javascript)

java - 对于相同的 api,gson 正在工作,但 jackson 无法解析响应,向变量返回 null 值

javascript - 如何获取数组中的模式

c# - 转换为 .NET 引用源中的对象

java - 这段代码的输出是什么以及如何输出?