Instanzvariablen - Lokale Variablen - warum der Unterschied?

J

jDennis79

Gast
Hallo Forum,

eine Frage, die ich mir gerade gestellt habe: Warum werden Instanzvariablen und lokale Variablen eigentlich unterschiedlich behandelt, was die Initialisierung angeht?

Gibt es einen Grund dafür, dass Instanzvariablen Default-Werte haben und lokale Variablen nicht? Und kann man als Anfänger den Grund, falls es ihn gibt, verstehen? Oder war diese Festlegung einfach Willkür der Java-Schöpfer? :D
 

tfa

Top Contributor
Bei lokalen Variablen kann der Compiler herausfinden, ob sie vor dem ersten Lesezugriff initialisiert worden sind. Bei Member-Varianblen geht das nicht. Und da es immer besserer Stil ist, Variablen zu initialisieren (noch eine C++-Altlast), ist diese Fehlermeldung nur ein Service des Compilers.
 

Landei

Top Contributor
Ich denke der Unterschied ist, dass man lokale Variablen ja "sofort", also innerhalb der Methode, braucht, und man deshalb auch weiß, was man für einen Wert benötige. Vergißt man die Initialisierung, ist es deshalb sinnvoller, per Fehlermeldung daran erinnert zu werden, als dass einem stillschweigend Default-Werte untergejubelt werden.

Instanzvariablen werden dagegen unter Umständen erst lange nach der Konstruktion des Objekts benötigt, deshalb kennt man bei der Instantiierung eventuell noch gar keine sinnvollen Werte dafür, und damit ist es praktisch, dass erst mal Default-Werte hineingepackt werden.

Bei lokalen Variablen kann der Compiler herausfinden, ob sie vor dem ersten Lesezugriff initialisiert worden sind.

Das stimmt nur bedingt. Nimm z.B.
Java:
public void foo() {
   int a;
   if (Math.random() < 10) {
      a = 42;
   } 
   System.out.println(a);
}

Das könnte der Java-Kompiler eigentlich problemlos erlauben, aber so schlau ist er nun wieder auch nicht...
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
7 Lokale Variablen, Klassenvariablen, Instanzvariablen Java Basics - Anfänger-Themen 15
KogoroMori21 Objektvariablen, Klassenvariablen, Instanzvariablen Java Basics - Anfänger-Themen 1
S Instanzvariablen vom Typ einer Klasse definieren Java Basics - Anfänger-Themen 12
L Instanzvariablen, Veerbung, Konstruktor Java Basics - Anfänger-Themen 32
D Setter/Getter für Instanzvariablen praktisch? Java Basics - Anfänger-Themen 19
H Vererbung mit private instanzvariablen Java Basics - Anfänger-Themen 9
B Methoden Nutzen der Instanzvariablen in Klassenmethoden Java Basics - Anfänger-Themen 1
G Klassenvariablen & Instanzvariablen Java Basics - Anfänger-Themen 4
N Instanzvariablen als private... Java Basics - Anfänger-Themen 2
H Klassen Konstruktor Parameter als Instanzvariablen zwischen speichern... Java Basics - Anfänger-Themen 11
H Klassen Von Instanzvariablen auf Instanz schließen Java Basics - Anfänger-Themen 21
J Klassen Ein Problem mit den Instanzvariablen Java Basics - Anfänger-Themen 13
S Instanzvariablen Java Basics - Anfänger-Themen 3
F wie oft werden Instanzvariablen genutzt Java Basics - Anfänger-Themen 14
J Variablen Aktualisieren von Instanzvariablen Java Basics - Anfänger-Themen 14
C Variablen Wann werden Instanzvariablen initalisiert? Java Basics - Anfänger-Themen 10
P Instanzvariablen mögliche Werte zuweisen Java Basics - Anfänger-Themen 6
S Variablen viele Instanzvariablen vermeiden Java Basics - Anfänger-Themen 14
R Vererbung Bitte um Erklärung - Instanzvariablen Java Basics - Anfänger-Themen 8
Luk10 Ändern von Instanzvariablen Java Basics - Anfänger-Themen 2
M fehler bei instanzvariablen deklaration?? Java Basics - Anfänger-Themen 6
Luk10 Vererben von private instanzvariablen Java Basics - Anfänger-Themen 20
Q Instanzvariablen implementieren - grundlegende Probleme Java Basics - Anfänger-Themen 3
S Zugriffe über Private Instanzvariablen Java Basics - Anfänger-Themen 3
F Zugriff auf Instanzvariablen, Frage zum guten Stil Java Basics - Anfänger-Themen 2
B Instanzvariablen private? Java Basics - Anfänger-Themen 5
D Fehler beim Aufrufen von Instanzvariablen Java Basics - Anfänger-Themen 5
G Klassen- und Instanzvariablen / Klassen- und Instanzmethode Java Basics - Anfänger-Themen 8
P Was sind Instanzvariablen? Java Basics - Anfänger-Themen 5
T Körper Brechnung - Lokale Variablen in Methoden übergeben Java Basics - Anfänger-Themen 10
S Verständnisfrage lokale Ordnerpfade Java Basics - Anfänger-Themen 1
P Variablen Wie kann ich eine lokale Variable in eine andere Methode einfügen? Java Basics - Anfänger-Themen 27
M Anonyme Klasse und lokale Variable Java Basics - Anfänger-Themen 2
B Lokale Datenbank Java Java Basics - Anfänger-Themen 2
A Variablen lokale Variable als private? Java Basics - Anfänger-Themen 3
C lokale Variable verwenden statt globale Java Basics - Anfänger-Themen 7
O Lokale Klassen Java Basics - Anfänger-Themen 15
D Von einer Methode auf eine lokale Variable in der Main zugreifen? Java Basics - Anfänger-Themen 15
A lokale Variable innerhalb "actionPerformed()" Java Basics - Anfänger-Themen 10
N Mit Kontrukor der Oberklasse lokale Variable initialisieren Java Basics - Anfänger-Themen 2
L Lokale Variable und Instanzvariable innerhalb Iterator Java Basics - Anfänger-Themen 8
M anonyme nicht-lokale Klassen Java Basics - Anfänger-Themen 13
T zugriff auf lokale variablen? Java Basics - Anfänger-Themen 6
M lokale exe-Datei über Java-Applet starten Java Basics - Anfänger-Themen 4
M lokale IP auslesen und auf URL weiterleiten Java Basics - Anfänger-Themen 8
Developer_X Batch Datei soll auf lokale JLibrary zugreifen Java Basics - Anfänger-Themen 11
hdi kleine Verständnisfrage lokale + Member Variable Java Basics - Anfänger-Themen 10
H Lokale Klassen und Zugriff. Java Basics - Anfänger-Themen 10
L Lokale Variablen automatisch durch Schleife erzeugen Java Basics - Anfänger-Themen 2
E Lokale variablen in methode Java Basics - Anfänger-Themen 6
C Nochmal zu lokale Einstellungen Java Basics - Anfänger-Themen 2
E Lokale Dateien ausführen, IE,FF Java Basics - Anfänger-Themen 3
P Unterschied lokale Variable und Instanzvariable Java Basics - Anfänger-Themen 2
roflomfg Text in eine lokale "*.txt-Datei" speichern Java Basics - Anfänger-Themen 9
K Lokale Variable in for Schleife Java Basics - Anfänger-Themen 5
S lokale Programme per Button starten Java Basics - Anfänger-Themen 4
G Auf lokale Variablen zugreifen Java Basics - Anfänger-Themen 5
P Lokale Dateien in Java-Applets einlesen Java Basics - Anfänger-Themen 2
O Welcher Object-Lock-Pool bei static Variablen? Java Basics - Anfänger-Themen 3
T variablen klassen übergreifend Java Basics - Anfänger-Themen 12
T Variablen Java Basics - Anfänger-Themen 1
N Verständnis Frage zu Variablen Java Basics - Anfänger-Themen 3
M Aufsummieren von variablen Wertegrößen Java Basics - Anfänger-Themen 17
M Mehrere Daten/ Variablen Speichern Java Basics - Anfänger-Themen 9
J Speichern von zwei Variablen durch Auslesen aus einem Numberfield Java Basics - Anfänger-Themen 2
ashi Variablen aufrufen Java Basics - Anfänger-Themen 17
U Warum kann ich, auf private Variablen zugreifen, wenn ich ein Objekt in der Klasse, die private Variablen hat erstelle und dort drauf zugreifen will? Java Basics - Anfänger-Themen 7
B Konkatenieren eines Strings und inkremtierenden Zahl zu einer INT Variablen Java Basics - Anfänger-Themen 7
A 2 Strings vergleichen in einer methode wenn man mit Globalen variablen arbeitet Java Basics - Anfänger-Themen 12
C Konstruktoren und Variablen Java Basics - Anfänger-Themen 42
F Auf Variablen eines Konstruktors zugreifen Java Basics - Anfänger-Themen 4
N Variable aus anderen Variablen in statischer Klasse berechnen/abspeichern? Java Basics - Anfänger-Themen 4
M Wie kann ich bei int-Variablen im exception handler auf bestimmte Strings reagieren? Java Basics - Anfänger-Themen 5
M Warum dürfen Objekte einer Klasse auf statische Variablen dieser Klasse referenzieren? Java Basics - Anfänger-Themen 10
B Variablen Variablen übertragen ohne Klassen Java Basics - Anfänger-Themen 5
B Methoden Methoden haben kein Zugriff auf variablen Java Basics - Anfänger-Themen 4
T Java Swing - Dreieck zeichnen mit verschiedenen Variablen Java Basics - Anfänger-Themen 8
Arif Vererbung Methodenvererbung mit finalen Variablen Java Basics - Anfänger-Themen 1
M Wie kann ich ein Objekt erstellen, wenn sich der Klassenname in einer Variablen befindet? Java Basics - Anfänger-Themen 10
S Variablen Variablen in einer Schleife erstellen lassen Java Basics - Anfänger-Themen 11
J Ich brauche Hilfe bei einem Code (Variablen speichern) Java Basics - Anfänger-Themen 29
F Variablen Werte einer Klasse überschreiben Java Basics - Anfänger-Themen 4
N Speichern von Werten in Variablen nach Schließen des Programms Java Basics - Anfänger-Themen 3
J Frage dazu Variablen klassenübergreifend zu verändern Java Basics - Anfänger-Themen 22
M Java Instanz-Variablen ? Java Basics - Anfänger-Themen 3
B Variablen von Methoden übertragen Java Basics - Anfänger-Themen 2
M Variablen umbenennen Java Basics - Anfänger-Themen 1
P Zugriff auf Variablen anderer Klassen in Greenfoot Java Basics - Anfänger-Themen 1
mars90 Fehler in der Variablen Deklaration Java Basics - Anfänger-Themen 8
E Variablen in formatierter Ausgabe Java Basics - Anfänger-Themen 15
V Schleife für das Einlesen von Werten für int Variablen, die Bestandteil von Arrays sein sollen Java Basics - Anfänger-Themen 16
M Komisches Verhalten der Variablen Java Basics - Anfänger-Themen 6
H Variablen Multiplikation einer inkrementierten Variablen Java Basics - Anfänger-Themen 5
scratchy1 Variablen vertauschen wenn Bedingung "umgedreht" wird Java Basics - Anfänger-Themen 40
J Variablen mit einer anderen Klasse bekannt machen Java Basics - Anfänger-Themen 7
C Methoden Problem beim Speichern von Variablen Java Basics - Anfänger-Themen 1
A Übergreifende Variablen Java Basics - Anfänger-Themen 17
A Variablen Verständnisfrage bzgl. Variablen/Referenzen Java Basics - Anfänger-Themen 3
H Variablen Methode zum Abfragen von Variablen aus Subklassen Java Basics - Anfänger-Themen 9
P Variablen Variablen voneinander abhängig Java Basics - Anfänger-Themen 54

Ähnliche Java Themen

Neue Themen


Oben