Fachkonzept - Variable
Werte unter einem Namen speichern
Eine Variable macht einen Wert unter einem Namen erreichbar. So kann er später wiederverwendet werden.
val erlaubt nach der ersten Zuweisung keine Neuzuweisung.
var erlaubt es, der Variablen später einen anderen Wert zuzuweisen. Beide
Formen haben einen festen Datentyp.
val maxGaeste = 30
var aktuelleGaeste = 12
aktuelleGaeste = 13
// maxGaeste = 40 wäre ein Fehler.
Ein mit val gespeicherter Wert wird häufig als Konstante
bezeichnet. Bei einem Objekt bedeutet das jedoch nur, dass die Variable kein anderes Objekt
erhalten darf. Veränderliche Attribute dieses Objekts können trotzdem geändert werden:
val karte = Karte("Herz", "Dame")
karte.rang = "Ass" // dieselbe Karte verändern
// karte = Karte("Pik", "7") // Fehler: neue Zuweisung an val
Mit var karte wäre auch die Neuzuweisung erlaubt. Der zweite Konstruktoraufruf würde
dann eine neue Karte erzeugen. Attributänderung und Neuzuweisung an eine Variable sind
verschiedene Vorgänge.
val ist sinnvoll, wenn keine Neuzuweisung benötigt wird. var
kommt zum Einsatz, wenn dieselbe Variable später einen anderen Wert speichern soll.
Datentyp und automatische Typableitung
Der Datentyp kann nach einem Doppelpunkt ausdrücklich angegeben werden:
val maxGaeste: Int = 30
val karte: Karte = Karte("Herz", "Dame")
Kotlin kann den Datentyp häufig aus dem zugewiesenen Wert ableiten.
Bei val maxGaeste = 30 wird Int, bei val karte = Karte("Herz", "Dame") wird Karte
abgeleitet.
Diese automatische Typableitung heißt auch Type inference.
Der ausdrücklich angegebene oder abgeleitete Datentyp bleibt erhalten. Eine
Int-Variable kann auch mit var später keinen
String speichern.