1

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

  }  

    }
}
4

2 回答 2

5

这是自动拆箱,仅此而已。无需迭代任何东西来证明:

Integer x = 10;
int y = x;

来自 Java 语言规范,第 5.1.8 节

拆箱转换将引用类型的值转换为原始类型的对应值。

(那里还有更多细节,但主要是转换列表。)

第 5.2 节指出拆箱转换在赋值转换的上下文中可用。

于 2010-07-24T22:20:56.153 回答
2

这是因为对于 Java 基本类型(intbyteshort等),它执行“自动装箱”和自动拆箱。

当你从集合中取出对象时,你会得到你放入的 Integer;如果需要 int,则必须使用 intValue 方法对 Integer 进行拆箱。所有这些装箱和拆箱都是一种痛苦,并且会使您的代码混乱。自动装箱和拆箱功能使过程自动化,消除了痛苦和混乱。

于 2010-07-24T22:21:25.543 回答