114 Stimmen

Warum werden lokale Variablen in Java nicht initialisiert?

Gab es einen Grund, warum die Entwickler von Java der Meinung waren, dass lokalen Variablen kein Standardwert zugewiesen werden sollte? Im Ernst: Wenn Instanzvariablen ein Standardwert zugewiesen werden kann, warum können wir das dann nicht auch für lokale Variablen tun?

Und es führt auch zu Problemen, wie in dieser Kommentar zu einem Blogeintrag :

Nun, diese Regel ist sehr frustrierend, wenn man versucht, eine Ressource in einem Endblock zu schließen. Wenn ich die Ressource innerhalb eines Try-Blocks instanziiere, aber versuche, sie innerhalb des Finally-Blocks zu schließen, erhalte ich diesen Fehler. Wenn ich die Instanziierung außerhalb des Try-Blocks verschiebe, erhalte ich eine weitere Fehlermeldung, die besagt, dass die Instanziierung innerhalb eines Try-Blocks erfolgen muss.

Sehr frustrierend.

-2voto

Akash5288 Punkte 1821

Die Antwort lautet: Instanzvariablen können im Klassenkonstruktor oder in einer beliebigen Klassenmethode initialisiert werden. Aber im Falle von lokalen Variablen bleibt das, was Sie einmal in der Methode definiert haben, für immer in der Klasse.

-2voto

Mitra Punkte 199

Mir fallen die folgenden zwei Gründe ein

  1. Wie in den meisten Antworten erwähnt, wird durch die Einschränkung der Initialisierung der lokalen Variablen sichergestellt, dass der lokalen Variable ein Wert zugewiesen wird, den der Programmierer wünscht, und dass die erwarteten Ergebnisse berechnet werden.
  2. Instanzvariablen können durch die Deklaration lokaler Variablen (mit demselben Namen) versteckt werden - um das erwartete Verhalten zu gewährleisten, müssen lokale Variablen zwangsläufig mit einem Wert initialisiert werden (ich würde dies jedoch unbedingt vermeiden).

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X