Подтвердить что ты не робот

Сравнение производительности int и Integer

Какой из них лучше всего подходит для программирования - int или Integer? Особенно, когда обе выполняют одну и ту же задачу?

Я пишу приложение на Java. В большинстве мест примитивных типов данных я использую int; и для объектов я использую Integer. Поэтому я смущен - какой из них лучше в местах, где мы должны использовать объекты.

В зависимости от производительности, какой из них лучше всего подходит для Java-приложения?

4b9b3361

Ответ 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

Хотя это может быть "медленнее", дополнительная безопасность типов сделает программирование, тестирование и отладку вашей системы намного проще и быстрее.