ArrayList arrayList = new ArrayList();
arrayList.add(1);
arrayList.add("два");
//Этот?
for(int i = 0; arrayList.size() > i; i++){
System.out.println(arrayList.get(i));
}
//или этот в котором как я понимаю будет приведение типов?
for (Object temp: arrayList){
System.out.println(temp);
}
我们知道在处理集合时 forEach 比 for 慢(尽管现在可能已经在优化)但是类型转换是否会产生额外的成本,或者编译器会看到我只是打印元素,并且无论如何它们都会被转换为 String并优化这是?
UPD:
在这种情况下,我们在工作表中有 Integer。在 ForEach 中,一切也是整数。在 forEach 的第一个变体中,有一个对象。
ArrayList<Integer> arr = new ArrayList<>();
arr.add(1);
arr.add(2);
arr.add(5);
for (Integer temp : arr ) {
System.out.println(temp);
}
问题是对于 forEach 中的对象是否会有不必要的类型转换,但在 for 我们不会转换为 Object。在这一点上我很困惑
不,它也在那里
Integerjava中没有模板,有泛型,它的集合(列表、字典、集合等)不存储简单类型(int、float、boolean等),如果添加了,那么它们将是包裹在各自的班级中。因此,在代码
int中变成了列表Integer。所有集合都将值存储在一个类型中
Object安慰: