> В чем разница между 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.
> Похожие задачи по mobile
Какие нововведения в Kotlin и Android за последние полгода запомнились
Как избежать ошибок при использовании lateinit var в Kotlin
Какие проблемы возникают при оборачивании launch в try-catch в Kotlin Coroutines
Как работает компиляция в Kotlin Multiplatform
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью