var-Keyword
Kurz: Ein Schlüsselwort zur Variablendeklaration, bei dem der Datentyp nicht explizit angegeben, sondern vom Compiler aus dem zugewiesenen Wert automatisch erschlossen wird (“Type Inference”).
Genauer: var spart Schreibarbeit bei offensichtlichen Typen (var zahl = 5; statt int zahl = 5;), ändert aber nichts an der Typsicherheit — der Typ steht nach der Zuweisung genauso fest wie bei expliziter Angabe, er wird nur automatisch bestimmt statt vom Entwickler geschrieben. In Java gibt es var seit Version 10, in JavaScript hat var eine andere, ältere Bedeutung (grob durch let/const abgelöst).
Im Detail
var zahl = 5; // vom Compiler als int erkannt
var text = "Hallo"; // vom Compiler als String erkannt
var liste = new ArrayList<String>(); // als ArrayList<String> erkannt
// zahl = "jetzt ein Text"; // Compiler-Fehler - Typ steht fest, ist nur nicht ausgeschriebenWichtig zu verstehen: var in Java ist reine Compile-Zeit-Bequemlichkeit, keine dynamische Typisierung wie in Python oder JavaScript. Der Compiler ersetzt var intern sofort durch den tatsächlichen, konkreten Typ (hier int, String, ArrayList<String>) — zur Laufzeit existiert var gar nicht mehr, und der kompilierte Bytecode sieht identisch aus, als hätte man den Typ von Hand ausgeschrieben. var funktioniert nur bei lokalen Variablen mit sofortiger Initialisierung, nicht bei Klassenfeldern, Methodenparametern oder Rückgabetypen — der Compiler muss den Typ aus dem zugewiesenen Wert ableiten können, und das ist nur direkt bei der Deklaration möglich.
Die Bedeutung unterscheidet sich fundamental von JavaScripts var: dort bezeichnet var seit den Anfängen von JS eine Variable mit Funktions-Scope (statt Block-Scope) und hat NICHTS mit Typ-Inferenz zu tun — JavaScript ist ohnehin dynamisch typisiert, jede Variable kann jederzeit ihren Typ wechseln. Moderne JavaScript-Codebasen vermeiden var inzwischen fast komplett zugunsten von let und const, die ein saubereres Block-Scoping bieten. Wer zwischen Java und JavaScript wechselt, sollte sich also bewusst machen: gleicher Name, komplett unterschiedliches Konzept.
Siehe auch: Declaring Variables