Почему объекты делятся на примитивные и ссылочные в Kotlin

«Почему объекты делятся на примитивные и ссылочные в Kotlin» — вопрос из категории Kotlin, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Примитивные типы (Int, Boolean, Double и др.) хранятся в стеке и содержат непосредственно значение, что делает операции с ними быстрее. Ссылочные типы (классы) хранятся в куче, а в стеке содержится только ссылка на объект.

Ключевые отличия:

  • Примитивы работают быстрее, но имеют ограниченный функционал
  • Ссылочные типы поддерживают наследование, nullability и сложную логику
// Примитив (оптимизируется JVM в int)
val a: Int = 10  

// Ссылочный тип
val b: Int? = null  

Kotlin автоматически выбирает оптимальное представление: примитив по умолчанию, но при использовании nullable или generics становится ссылочным.