Ответ
Kotlin автоматически преобразует примитивные типы (Int, Double, Boolean и др.) в соответствующие Java-примитивы (int, double, boolean) для оптимизации производительности. Однако, если тип используется как nullable (Int?), Kotlin использует классы-обертки (Integer, Double и т.д.).
Пример:
val a: Int = 42 // Примитив (int в байт-коде)
val b: Int? = null // Обертка (Integer)
В коллекциях Kotlin по умолчанию используются обертки, но можно использовать специализированные (IntArray, DoubleArray) для примитивов.