Java имеет объектную, целочисленную и примитивную версии int базовых типов.
Примитивные версии быстрее / легче / и т. Д.в общем, вы должны их использовать.
Мне интересно, почему разработчики Java не только имеют типы объектов и используют примитивные версии для оптимизации за кулисами.
Итак:
Integer foo(Integer alpha)
{
Integer total = 0;
for(Integer counter = 0; counter < alpha; counter++)
{
total += counter;
}
return total;
}
Будет скомпилирован в код, подобный следующему:
int foo(int alpha)
{
int total = 0;
for(int counter = 0; counter < alpha; counter++)
{
total += counter;
}
return total;
}
По сути, этот гипотетический Java-компилятор преобразует экземпляры Integer, Double, Float и т. Д. В эквивалентные примитивные типы.Только в тех случаях, когда объекты действительно необходимы (скажем, для помещения элемента в контейнер), будут задействованы фактические объекты Integer.
ПРИМЕЧАНИЕ: в приведенном выше коде используются операторы для объектов Integer, которыеЯ знаю, что на самом деле не разрешено.Поскольку я изобретаю гипотетические компиляторы Java, я притворюсь, что у этого есть специальный корпус для Integer / Float / Double, как для String.