Standard-Initialisierung in Java

8

Ich habe eine Verwirrung über die Initialisierung von Variablen in Java. Wie ich es verstehe, erhalten Klassenvariablen eine Standardinitialisierung, während lokale Variablen nicht standardmäßig initialisiert werden. Wenn ich jedoch ein Array innerhalb einer Methode mit dem new-Schlüsselwort erstelle, wird es standardmäßig initialisiert. Gilt das für alle Objekte? Wird mit dem new-Schlüsselwort ein Objekt initialisiert, unabhängig davon, ob es sich um eine Klassenvariable oder eine lokale Variable handelt?

    
B M 01.03.2013, 19:20
quelle

3 Antworten

2
  

Gilt das für alle Objekte? Initialisiert mit dem neuen Schlüsselwort ein   Objekt unabhängig davon, ob es eine Klassenvariable oder eine lokale Variable ist?

Wenn Sie new keyword verwenden. Es bedeutet, dass Sie Ihr Objekt initialisiert haben. Es spielt keine Rolle, ob es auf Methoden- oder Instanzenebene deklariert wird.

%Vor%     
PermGenError 01.03.2013, 19:22
quelle
27

Von Java-Sprachspezifikation

  

Jede Klassenvariable, Instanzvariable oder Array-Komponente wird beim Erstellen mit einem Standardwert initialisiert (§15.9, §15.10):

  • Für Typbyte ist der Standardwert Null, dh der Wert von (Byte) 0.

  • Für den Typ short ist der Standardwert Null, dh der Wert von (short) 0.

  • Für den Typ int ist der Standardwert 0, also 0.

  • Für den Typ long ist der Standardwert 0, also 0L.

  • Für den Typ float ist der Standardwert positiv null, also 0.0f.

  • Für den Typ double ist der Standardwert positiv null, dh 0,0d.

  • Für den Typ char ist der Standardwert das Nullzeichen, also '\ u0000'.

  • Für den Typ boolean ist der Standardwert false.

  • Für alle Referenztypen (§4.3) ist der Standardwert null

iTech 01.03.2013 19:24
quelle
5

Nach einer weiteren Untersuchung werden Grundelemente immer nur dann auf den Standardwert initialisiert, wenn sie Elementvariablen sind. Lokale Variablen werden einen Kompilierungsfehler auslösen, wenn sie nicht initialisiert sind.

Wenn Sie ein Array von Primitiven erstellen, werden diese alle standardmäßig initialisiert (dies gilt sowohl für lokale als auch für Member-Arrays), ein Array von Objekten, die Sie jeweils instanziieren müssen.

    
Kevin DiTraglia 01.03.2013 19:22
quelle

Tags und Links