2016-03-23 13 views
0
public class Test{ 
int i; 
Test(){ 
    System.out.println(i); 
} 
public static void main(String[] args){ 
    Test obj=new Test(); 
    } 
} 

Output = 0Warum und wie Instanzvariable initialisiert wird, ohne von Konstruktor in Java initialisiert zu werden?

P. S: Ich bin naiv in Java so könnte diese Frage sehr albern. Ich erwarte deine Unterstützung. Danke

+0

So ist Java * definiert *. Lesen Sie die JLR - die Java-Sprachreferenz - für die Details. –

+0

Der Standardwert eines int ist 0 – Abdelhak

+0

Wenn Sie ein int als "Feld" (Klassenvariable) deklarieren, wird es automatisch mit dem Wert "0" initialisiert, aber wenn es zu einer anderen Methode gehört, ist "null" –

Antwort

1

Statische/Instance-Felder, die nicht initialisiert sind, werden vom Compiler auf einen Standardwert gesetzt.

Die Tabelle unten zeigt den Standardwert für die Datentypen:

+--------------------------+----------------------------+ 
|  Data Type   | Default Value (for fields) | 
+--------------------------+----------------------------+ 
| byte      | 0       | 
| short     | 0       | 
| int      | 0       | 
| long      | 0L       | 
| float     | 0.0f      | 
| double     | 0.0d      | 
| char      | '\u0000'     | 
| String (or any object) | null      | 
| boolean     | false      | 
+--------------------------+----------------------------+ 

Für weitere Informationen können Sie dem doc here

+0

@GauravDave, vielen Dank für Ihr Feedback. – nnunes10

1

See sehen, jeder Instance-Variable or Class-Variable indem sie sie initialisiert ist default value

Falls instance-variable ein Referenztyp ist, dann wird immer mit dem Standardwert von 0 zugewiesen

So, hier in Ihrem Fall int ist Urtyp dessen default Wert ist 0(zero) das ist der Grund, warum Sie 0 in out-put erhalten.

Verwandte Themen