Java 5 或更高版本是否对数组应用某种形式的“装箱”?当以下代码像 Iterable 一样遍历数组时,我想到了这个问题。
for( String : args ){
// Do stuff
}
最佳答案
数组不是原语。基元是不是对象的东西。只有 boolean、char、byte、short、int、long、float 和 double 是原语。数组是具有特殊语法的对象。如果您可以在 Java < 5 中的类型上调用 toString(),则它不是原始类型。
所有自动装箱所做的就是将基元与需要对象(例如 ArrayList)的对象相互转换。它允许这样的代码:
List<Integer> l = new ArrayList<Integer>();
l.add( 7 );
int i = l.get(0);
简写为:
List<Integer> l = new ArrayList<Integer>();
Integer ii = Integer.valueOf( 7 )
l.add( ii );
int i = l.get(0).getIntValue();
这就是自动装箱的全部功能。由于 String 已经是一个对象(与 C 中不同,它不等同于 char[]),因此无需对 String 进行装箱/拆箱。
编辑:如前所述添加了 boolean 值
关于java - 使用增强的 for 循环时数组是否被转换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6216768/