Сравнение производительности int и Integer
Какой из них лучше всего подходит для программирования - int
или Integer
? Особенно, когда обе выполняют одну и ту же задачу?
Я пишу приложение на Java. В большинстве мест примитивных типов данных я использую int
; и для объектов я использую Integer
. Поэтому я смущен - какой из них лучше в местах, где мы должны использовать объекты.
В зависимости от производительности, какой из них лучше всего подходит для Java-приложения?
Ответы
Ответ 1
Используйте int
, когда это возможно, и при необходимости используйте Integer
. Поскольку int
является примитивным, он будет быстрее. Современные JVM знают, как оптимизировать Integer
с помощью автоматического бокса, но если вы пишете критический код производительности, int
- это путь.
Взгляните на this и this статья. Хотя вы не должны относиться к ним как к абсолютным истинам, они показывают, что объекты будут медленнее, чем их примитивные копии.
Итак, используйте int
, когда это возможно (повторюсь: если вы пишете критический код производительности). Если для метода требуется Integer, используйте его вместо этого.
Если вы не заботитесь о производительности и хотите сделать все объектно-ориентированным способом, используйте Integer
.
Ответ 2
Используйте int
, где это возможно. Используйте Integer
, только если:
- Вам нужен способ представления "no value" или "uninitialized".
Integer
может быть null
, a int
всегда имеет значение int.
- Вы хотите использовать такие коллекции, как
List
(хотя вы можете использовать int
извне и иметь autoboxing, скрыть тот факт, что коллекция внутренне хранит экземпляры Integer
).
- Вы используете API, фреймворк или инструмент, который требует использования
Integer
или Object
, или не работает с примитивными типами.
- Вам нужно иметь возможность синхронизировать объект (очень маловероятно).
Ответ 3
int
примитив, обычно он должен быть быстрее. Он просто содержит данные о сыром номере.
Integer
является объектом, он несет некоторые дополнительные вещи, чтобы вы, например. может помещать число в списки.
Ответ 4
int является примитивным, Integer - это int, завернутый как объект.
Это действительно зависит от того, как вы собираетесь их использовать.
Ответ 5
Как альтернативный вид.... возможно, вы не должны использовать ни Integer, ни int.
Если значение действительно является объектом с поведением - например, укажите сумму денег или расстояние или что-то еще, тогда, возможно, вы должны использовать объект с поведением.
Подробнее об этом можно узнать здесь:
http://www.time4tea.net/wiki/display/MAIN/Microtypes
Хотя это может быть "медленнее", дополнительная безопасность типов сделает программирование, тестирование и отладку вашей системы намного проще и быстрее.