Массивы примитивных типов в 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/.