Согласно справке , массивы создаются следующим образом:
Для примитивных типов Java существуют отдельные типы IntArrayи DoubleArrayт. Д., Которые хранят неупакованные значения.
Они создаются с помощью соответствующих конструкторов и фабричных функций:
val arrayOfZeros = IntArray(size) //equivalent in Java: new int[size]val numbersFromOne = IntArray(size) { it + 1 }
val myInts = intArrayOf(1, 1, 2, 3, 5, 8, 13, 21)
Первый аналогичен таковому в Java, он просто создает примитивный массив, заполненный значением по умолчанию, например нулем для Int, falseдля Boolean.
Непримитивные массивы представлены Array<T>классом, где T- тип элементов.
Tвсе еще может быть один из типов примитивов в Java ( Int, Boolean, ...), но значения внутри будут боксировали равносильно в Java Integer, Doubleи так далее.
int
, но для объектов есть stackoverflow.com/questions/32679060/…Ответы:
Согласно справке , массивы создаются следующим образом:
Для примитивных типов Java существуют отдельные типы
IntArray
иDoubleArray
т. Д., Которые хранят неупакованные значения.Они создаются с помощью соответствующих конструкторов и фабричных функций:
val arrayOfZeros = IntArray(size) //equivalent in Java: new int[size] val numbersFromOne = IntArray(size) { it + 1 } val myInts = intArrayOf(1, 1, 2, 3, 5, 8, 13, 21)
Первый аналогичен таковому в Java, он просто создает примитивный массив, заполненный значением по умолчанию, например нулем для
Int
,false
дляBoolean
.Непримитивные массивы представлены
Array<T>
классом, гдеT
- тип элементов.T
все еще может быть один из типов примитивов в Java (Int
,Boolean
, ...), но значения внутри будут боксировали равносильно в JavaInteger
,Double
и так далее.Кроме того,
T
может быть как допускающим значение NULL, так и ненулевым, напримерString
иString?
.Они создаются аналогичным образом:
val nulls = arrayOfNulls<String>(size) //equivalent in Java: new String[size] val strings = Array(size) { "n = $it" } val myStrings = arrayOf("foo", "bar", "baz") val boxedInts = arrayOfNulls<Int>(size) //equivalent in Java: new Integer[size] val boxedZeros = Array(size) { 0 }
источник
Array<Int>(size)
не компилируется. Это потому, что вы не можете создать массив, не допускающий значения NULL, без предоставления элементов.В Kotlin создать IntArray размера N просто. Использовать
IntArray(n)
или соответствующий тип, как подробно описано в ответе на горячие клавиши.При использовании массива фиксированного размера вы можете использовать Kotlin Destructuring
// Create fixed sized array val point = IntArray(2) // Access values directly val (x, y) = point
В этом случае
x
будут взяты из индекса 0,y
из индекса 1 и т. Д.источник