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

Использование int vs Integer

Я столкнулся с классом, используя переменные Integer, чтобы захватить размер, который будет использоваться в цикле for. Является ли это хорошей практикой или мы должны использовать тип примитивных данных int?

Integer size = something.getFields().size();
for (Integer j = 0; j < size - 1; ++j) 
4b9b3361

Ответ 1

класс Integer предоставляется так, что значения могут быть помещены в коробку/распаковываться с использованием чистого OO-метода. используйте int, если это необходимо, если только вам не нужно использовать его способом OO; в этом случае Integer подходит.

Java Int vs Integer

Тем не менее, здесь очень разные вещи. Int - число; a > Целое число - это указатель, который может ссылаться на объект, содержащий число.

...

int не является объектом и не может передаваться ни одному методу, который требует объекты. Частным случаем является использование предоставленных классов сбора ( List, Map, Set) - хотя можно писать версии этих классы, которые предоставляют аналогичные возможности для версий объектов. часто требуются классы-оболочки (Integer, Double и т.д.) всякий раз, когда используется интроспекция (например, в API отражения).

Лучшее описание того, когда следует использовать один из них:

Выбор между int и Integer

Я начну с того, как эти типы следует использовать перед входом в подробно о том, почему.

  • Предпочитает int по соображениям производительности
  • Методы, которые берут объекты (включая такие общие типы, как List<T>) неявно потребует использования Integer
  • Использование Integer относительно дешево для низких значений (от -128 до 127) из-за интернирования - используйте Integer.valueOf(int), а не новые Integer (int)
  • Не используйте == или != с целыми типами
  • Рассмотрите возможность использования Integer, когда вам нужно представить отсутствие значения (null)
  • Остерегайтесь unboxing Целочисленные значения для int с нулевыми значениями

Ответ 2

Если вы можете использовать int, сделайте это. Если значение может быть null или используется как объект, например. Дженерики, используйте Integer

Обычно неважно, какой из них вы используете, но часто int выполняет немного лучше.

Ответ 3

Этот подход на практике не очень хорош, используйте int, когда это возможно. Использование Integer указывает, что эта конкретная переменная может быть null (или она находилась внутри коллекции, проклятых дженериков...) - это не так.

Также использование Integer вводит дополнительные накладные расходы на бокс и распаковку.

Ответ 4

Это потенциальное бедствие, ожидаемое в крупных проектах. Кодер здесь забыл, что каждый Integer фактически является новым объектом, и, чтобы использовать его как int, все время должен быть бокс и unboxing. Это не только неэффективно, но и не будет работать, как ожидалось. Лучше всего рекомендуется всегда использовать int, где это возможно, и использовать Integer только для размещения этих значений в списках, контейнерах или для хранения базы данных. Помните, что сравнение объектов с помощью > , < и == означает что-то еще, чем когда вы используете одни и те же операторы для сравнения примитивов.

Ответ 5

Не используйте его только для цикла. Используйте примитивный тип int (более высокая производительность), который не совпадает с классом Integer.

Класс Integer обертывает значение примитивного типа int в объект. Объект типа Integer содержит одно поле, тип которого is int.

Кроме того, этот класс предоставляет несколько методов преобразования int к String и String к int, а также к другим константам и методы, полезные при работе с int.

Итак, используйте Integer, если вам нужно вызвать функции Integer или вам нужно присвоить ему нулевое значение.

Вам также необходимо использовать Integer вместо int для таких дженериков, как List

Ответ 6

Когда вам нужно использовать объекты, вам нужно использовать классы Wrapper,  например, Integer, Double, Float и т.д.

например:

 int n = Integer.parseInt("10");

Здесь мы преобразуем строку в целое (примитивный тип), но метод parseInt (String str) работает только на классах Wrapper (т.е. Object), поэтому мы использовали его... вы найдете гораздо больше пользы от него в java.

Ответ 7

В результате бокса и распаковки может быть штраф за выполнение, так как вы несете накладные расходы на конвертацию между примитивным и ссылочным типом.

Однако класс Integer добавляет дополнительные методы, которые могут быть очень полезными.

Ответ 8

Я обычно использую Integer из-за чисто OO. Производительность int определенно намного лучше, чем его объектная копия, но она заметна только тогда, когда вы зацикливаете миллионы раз в цикле.

IMHO, Если производительность имеет первостепенное значение в вашем приложении, и вы хотите сжать хотя бы одну nano секунду, тогда используйте int без какого-либо мозга. Но если OO и читаемость являются основными, то используйте Integer.

Ответ 9

Продвигать примитивные типы всегда там, где это возможно.

примитивные типы не могут использоваться как GenericArgument или null.