Zgodnie z referencją tablice są tworzone w następujący sposób:
Dla prymitywnych typów Javy istnieją różne typy IntArray, DoubleArrayitp które przechowują rozpakowanych wartości.
Tworzone są za pomocą odpowiednich konstruktorów i funkcji fabrycznych:
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)
Pierwsza jest podobna do tej w Javie, po prostu tworzy prymitywną tablicę wypełnioną domyślną wartością, np. Zero for Int, falsefor Boolean.
Tablice inne niż pierwotne są reprezentowane przez Array<T>klasę, gdzie Tjest typem elementów.
Tnadal może być jednym z typów prymitywnych w Javie ( Int, Boolean...), ale wartości wewnątrz zostaną zapakowane równoważnie do Javy Integer, Doublei tak dalej.
int
, ale w przypadku obiektów jest stackoverflow.com/questions/32679060/ ...Odpowiedzi:
Zgodnie z referencją tablice są tworzone w następujący sposób:
Dla prymitywnych typów Javy istnieją różne typy
IntArray
,DoubleArray
itp które przechowują rozpakowanych wartości.Tworzone są za pomocą odpowiednich konstruktorów i funkcji fabrycznych:
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)
Pierwsza jest podobna do tej w Javie, po prostu tworzy prymitywną tablicę wypełnioną domyślną wartością, np. Zero for
Int
,false
forBoolean
.Tablice inne niż pierwotne są reprezentowane przez
Array<T>
klasę, gdzieT
jest typem elementów.T
nadal może być jednym z typów prymitywnych w Javie (Int
,Boolean
...), ale wartości wewnątrz zostaną zapakowane równoważnie do JavyInteger
,Double
i tak dalej.Ponadto
T
może mieć wartość null i non-null, jakString
iString?
.Są one tworzone w podobny sposób:
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 }
źródło
Array<Int>(size)
nie kompiluje się. Dzieje się tak, ponieważ nie można utworzyć tablicy niepodlegającej wartości null bez podania elementów.W Kotlinie tworzenie IntArray o rozmiarze N jest proste. Użyj
IntArray(n)
lub odpowiedniego typu, dokładnie opisanego w odpowiedzi klawisza skrótu.Korzystając z tablicy o stałym rozmiarze, możesz użyć Destrukturyzacji Kotlin
// Create fixed sized array val point = IntArray(2) // Access values directly val (x, y) = point
W tym przypadku
x
zostanie pobrany z indeksu 0,y
z indeksu 1 itd.źródło