Datentypen
Daten können unterschiedliche Typen haben.
Um ein mathematisches Problem zu lösen, schreibt man einen Ausdruck:
5.9 + 6
Du weißt, dass das Addieren dieser Zahlen eine weitere Zahl ergibt. Kotlin weiß das auch. Du weißt, dass eine davon eine Dezimalzahl (5.9) ist, die Kotlin Double nennt, und die andere eine ganze Zahl (6), die Kotlin Int nennt. Du weißt, dass das Ergebnis eine Dezimalzahl ist.
Ein Typ (auch Datentyp genannt) sagt Kotlin, wie du diese Daten verwenden möchtest. Ein Typ definiert die Menge der Werte, die ein Ausdruck dieses Typs erzeugen kann. Ein Typ definiert auch die Operationen, die auf den Daten durchgeführt werden können, die Bedeutung der Daten und wie Werte dieses Typs gespeichert werden können.
Kotlin verwendet Typen, um zu überprüfen, ob deine Ausdrücke korrekt sind. Im obigen Ausdruck erstellt Kotlin einen neuen Wert des Typs Double, um das Ergebnis zu speichern.
Kotlin versucht, sich an deine Bedürfnisse anzupassen. Wenn du es bittest, etwas zu tun, das die Typregeln verletzt, erzeugt es eine Fehlermeldung. Zum Beispiel, versuche, einen String und eine Zahl zu addieren:
// DataTypes/StringPlusNumber.kt
fun main() {
println("Sally" + 5.9)
}
/* Output:
Sally5.9
*/
Typen sagen Kotlin, wie sie korrekt verwendet werden. In diesem Fall sagen die Typregeln
Kotlin, wie man eine Zahl zu einem String hinzufügt: indem die beiden Werte angehängt werden und ein String erstellt wird, um das Ergebnis zu halten.
Versuchen Sie nun, einen String und ein Double zu multiplizieren, indem Sie das + in
StringPlusNumber.kt durch ein * ersetzen:
"Sally" * 5.9
Das Kombinieren von Typen auf diese Weise ergibt für Kotlin keinen Sinn, daher gibt es einen Fehler aus.
In var & val haben wir verschiedene Typen gespeichert. Kotlin hat die Typen für uns ermittelt, basierend darauf, wie wir sie verwendet haben. Dies wird type inference genannt.
Wir können ausführlicher sein und den Typ angeben:
val identifier: Type = initialization
Du beginnst mit dem Schlüsselwort val oder var, gefolgt vom Bezeichner, einem Doppelpunkt,
dem Typ, einem =, und dem Initialisierungswert. Anstatt also zu sagen:
val n = 1
var p = 1.2
Du kannst sagen:
val n: Int = 1
var p: Double = 1.2
Wir haben Kotlin gesagt, dass n ein Int und p ein Double ist, anstatt es den Typ ableiten zu lassen.
Hier sind einige von Kotlins grundlegenden Typen:
// DataTypes/Types.kt
fun main() {
val whole: Int = 11 // [1]
val fractional: Double = 1.4 // [2]
val trueOrFalse: Boolean = true // [3]
val words: String = "A value" // [4]
val character: Char = 'z' // [5]
val lines: String = """Triple quotes let
you have many lines
in your string""" // [6]
println(whole)
println(fractional)
println(trueOrFalse)
println(words)
println(character)
println(lines)
}
/* Output:
11
1.4
true
A value
z
Triple quotes let
you have many lines
in your string
*/
-
[1] Der
Int-Datentyp ist ein Ganzzahltyp, was bedeutet, dass er nur ganze Zahlen speichert. -
[2] Um Bruchzahlen zu speichern, verwenden Sie einen
Double. -
[3] Ein
Boolean-Datentyp speichert nur die beiden speziellen Wertetrueundfalse. -
[4] Ein
Stringspeichert eine Zeichenfolge. Sie weisen einen Wert mit einem doppelt-umrahmtenStringzu. -
[5] Ein
Charspeichert ein Zeichen. -
[6] Wenn Sie viele Zeilen und/oder Sonderzeichen haben, umgeben Sie diese mit dreifachen Anführungszeichen (dies ist ein dreifach-umrahmter
String).
Kotlin verwendet Typinferenz, um die Bedeutung gemischter Typen zu bestimmen. Beim Mischen von Int und Double während der Addition entscheidet Kotlin den Typ für den resultierenden Wert:
// DataTypes/Inference.kt
fun main() {
val n = 1 + 1.2
println(n)
}
/* Output:
2.2
*/
Wenn Sie einen Int zu einem Double mit Typinferenz hinzufügen, bestimmt Kotlin,
dass das Ergebnis n ein Double ist und stellt sicher, dass es alle Regeln
für Doubles einhält.
Die Typinferenz von Kotlin ist Teil seiner Strategie, Arbeit für den Programmierer zu übernehmen. Wenn Sie die Typdeklaration weglassen, kann Kotlin sie normalerweise ableiten.
Übungen und Lösungen finden Sie unter www.AtomicKotlin.com.