De acordo com a referência , os arrays são criados da seguinte maneira:
Para os tipos primitivos de Java, existem tipos distintos IntArray, DoubleArrayetc. , que armazenam valores não embalados .
Eles são criados com os construtores e funções de fábrica correspondentes:
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)
O primeiro é semelhante ao do Java, ele apenas cria um array primitivo preenchido com o valor padrão, por exemplo, zero para Int, falsepara Boolean.
Matrizes não primitivas são representadas por Array<T>classe, onde Té o tipo de item.
Tainda pode ser um dos tipos primitivos em Java ( Int, Boolean...), mas os valores dentro vai ser embalado de forma equivalente para Java do Integer, Doublee assim por diante.
int
, mas para Objetos, há stackoverflow.com/questions/32679060/…Respostas:
De acordo com a referência , os arrays são criados da seguinte maneira:
Para os tipos primitivos de Java, existem tipos distintos
IntArray
,DoubleArray
etc. , que armazenam valores não embalados .Eles são criados com os construtores e funções de fábrica correspondentes:
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)
O primeiro é semelhante ao do Java, ele apenas cria um array primitivo preenchido com o valor padrão, por exemplo, zero para
Int
,false
paraBoolean
.Matrizes não primitivas são representadas por
Array<T>
classe, ondeT
é o tipo de item.T
ainda pode ser um dos tipos primitivos em Java (Int
,Boolean
...), mas os valores dentro vai ser embalado de forma equivalente para Java doInteger
,Double
e assim por diante.Além disso,
T
pode ser anulável e não nulo comoString
eString?
.Eles são criados de maneira semelhante:
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 }
fonte
Array<Int>(size)
não compila. Isso porque você não pode criar uma matriz não anulável sem fornecer os elementos.No Kotlin, criar um IntArray de tamanho N é simples. Use
IntArray(n)
ou o tipo apropriado, conforme detalhado na resposta das teclas de atalho.Ao utilizar sua matriz de tamanho fixo, você pode usar Kotlin Destructuring
// Create fixed sized array val point = IntArray(2) // Access values directly val (x, y) = point
Neste caso,
x
será retirado do índice 0,y
do índice 1, etc.fonte