IntArray vs Array<Int> in Kotlin: Was ist der Unterschied und was soll man wählen?
Hallo, Kollegen! Ich habe angefangen, Kotlin zu lernen, und bin auf ein Verständnisproblem gestoßen: In der Sprache gibt es zwei Typen für die Arbeit mit Arrays von ganzen Zahlen – IntArray und Array. Auf den ersten Blick sehen sie ähnlich aus, aber der Compiler meckert, wenn ich versuche, sie zu mischen.
Hier ist ein Beispiel, das mich verwirrt hat:
```kotlin
val arr1: IntArray = intArrayOf(1, 2, 3)
val arr2: Array = arrayOf(1, 2, 3)
// Versuche, eines dem anderen zuzuweisen – Fehler!
// arr1 = arr2 // Type mismatch
```
Warum ist das so? Beide speichern doch ganze Zahlen. Ich habe gelesen, dass IntArray ein primitiver Typ ist und Array ein Referenztyp, aber ich verstehe nicht, wie sich das auf die Performance auswirkt und wann man was verwenden sollte.
Außerdem ist mir aufgefallen, dass sie unterschiedliche Methoden haben. Zum Beispiel hat IntArray sum() und average() direkt aus der Box, während man bei Array .map { it.toDouble() } schreiben muss. Warum ist das so?
Und noch eine Frage: Wenn ich eine Funktion schreibe, die ein Array von Zahlen akzeptiert, welchen Typ soll ich wählen, damit sie sowohl mit IntArray als auch mit Array funktioniert? Ich habe versucht, List zu verwenden – das funktioniert, aber