> В чем разница между Int и Int? в Kotlin и когда Int рассматривается как объект, а когда как примитив (Kotlin, Android)

Уровень: middle · Роль: mobile · Категория: Технические вопросы

Компании: ЛеруаМерлен

Стек: Kotlin, Android

> Пример ответа

В Kotlin Int - это всегда ссылочный тип (объект), а Int? - nullable-версия, допускающая null. Однако на уровне JVM Kotlin оптимизирует производительность: если Int не nullable и не используется в generic-контексте (например, в List<Int>), он компилируется в примитивный int. Если же переменная объявлена как Int? или используется в коллекции, она становится объектом Integer.

Когда Int - примитив:

  • Локальные переменные, параметры функций, поля классов без ?.
  • Пример: val a: Int = 42 - на JVM это int.

Когда Int - объект:

  • При использовании ? (nullable): val b: Int? = null - это Integer.
  • В generic-типах: val list: List<Int> = listOf(1, 2) - каждый элемент упакован в Integer.
  • При приведении к Any или использовании в рефлексии.

Ключевое отличие: Int? всегда объект, так как примитивы не могут быть null. Это влияет на производительность (упаковка/распаковка) и сравнение - для Int? используйте == (сравнение значений, а не ссылок), для примитивов - тоже ==, но без overhead.

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью