Массивы примитивных типов в Kotlin
Когда используешь функцию arrayOf() и создаешь массив с типами вроде Array<Int>, полученный таким образом массив будет представлять собой список из объектов. К примеру, при работе в JVM целочисленный тип будет упакован не как примитивный тип int, а как класс Integer. Все это, конечно, неплохо, однако есть нюанс: применение примитивных типов, если сравнивать их с аналогами в виде классов, потребляет меньше системной памяти, следовательно, повышает производительность. Как же создавать массивы примитивных типов в Kotlin? Нам помогут IntArray, FloatArray и DoubleArray.
Примечание: у вас не получится использовать примитивы со списками, поэтому принимать решение об использовании примитивов следует, рассматривая каждый случай отдельно.
Итак, продолжим. Стандартная библиотека Kotlin включает в себя не только arrayOf(), но и прочие функции -- они как раз и позволяют пользователю создавать массивы, которые будут соответствовать массивам примитивных типов. Например, никто не мешает получить массив нечетных чисел таким образом:
То есть при запуске Kotlin в JVM массив с именем oddNumbers скомпилируется в Java-массив типа int[].
Однако существуют и другие функции стандартной библиотеки:
- floatArrayOf()
- doubleArrayOf()
- booleanArrayOf()
Функции, упомянутые выше, позволяют создавать массивы соответствующих типов: IntArray, FloatArray, DoubleArray и пр. Кроме того, есть возможность передать число в конструктор для этих типов. Например, это может пригодиться при создании массива нулей.
Если же надо осуществить конвертацию между упакованными и примитивными массивами, пригодится функция toIntArray():
В результате типом константы otherOddNumbers станет уже IntArray, а не Array<Int>.
По материалам https://kotlins.org/.