Ответ
Примитивные типы (Int, Boolean, Double и др.) хранятся в стеке и содержат непосредственно значение, что делает операции с ними быстрее. Ссылочные типы (классы) хранятся в куче, а в стеке содержится только ссылка на объект.
Ключевые отличия:
- Примитивы работают быстрее, но имеют ограниченный функционал
- Ссылочные типы поддерживают наследование, nullability и сложную логику
// Примитив (оптимизируется JVM в int)
val a: Int = 10
// Ссылочный тип
val b: Int? = null
Kotlin автоматически выбирает оптимальное представление: примитив по умолчанию, но при использовании nullable или generics становится ссылочным.