Да.
List<Integer> ints = Arrays.asList(1,2,3); //here lists is of type Integer which is boxed type
int s = 0; //s is primitive type
Помните, что мы можем сравнить только:
1.) примитив к примитивному типу
2.) в штучной упаковке в штучной упаковке типа
можно сказать
Список ints могут быть представлены как:
[Integer.valueof(1), Integer.valueof(2), Integer.valueof(3)]
Таким образом, в следующем коде
for (int n : ints) // in every loop ints current index value which is an Integer is unboxed and assigned to 'int n'
и когда следующий код считывается ..
s += n;// int n is added to int s (primitive added to primitive ie; no conversion done here)
2.) Теперь второй подход
for (Integer n : ints) { ... }// here, since 'n' is also boxed so no conversion takes place
Однако, когда следующая строка является столкнуто
s += n; // boxed Integer n is unboxed to a primitive and added to primitive 's' (so unboxing/conversion happens in each addition)
Итак, в этом разница между двумя, однако количество конверсий в обоих подходах одинаково.
коллекция не поддерживает примитивные типы, поэтому существует класс обертки для использования примитивов в коллекциях. – Prashant
генераторы удаляются во время выполнения, поэтому ваш список заполняется объектами. При извлечении они возвращаются к 'Integer'.Когда вы перебираете список со значениями 'int', вы принудительно делаете unboxing для каждой итерации. – Dragan