2014-11-10 5 views
6

Im folgende Beispiel, das verwendet (obwohl diese Frage zu JDBC nicht spezifisch) JDBC:Warum Initialisierung Referenzen auf Null ist in Java erlaubt?

Connection conn = null; 

try 
{ 
    ..... Do the normal JDBC thing here .... 
} 
catch(SQLException se) 
{ 
    if(conn != null) 
    { 
    conn.close(); 
    } 
} 

Wenn ich initialisieren nicht die conn zu null dann dem Compiler, dass ich nicht einen Verweis in dem catch Block beschwert verwenden kann das wurde nicht initialisiert.

Java initialisiert standardmäßig einen Objektreferenz auf null, warum muss ich es explizit auf Null initialisieren. Wenn der Compiler den ursprünglichen Wert der Referenz nicht mochte, die zu Beginn Null war, warum akzeptierte er sogar meine explizite Initialisierung?

HINWEIS: Ich verwende Eclipse Luna als meine IDE.

+1

Ihr Titel hat nichts mit Ihrer Frage zu tun. – EJP

+0

Als ich diese Frage stellte (mit dem Wissen, dass ich hatte), machte der Titel für mich Sinn. Im Nachhinein natürlich .... :) – davison

+0

Du solltest die Verbindung im ** endlich ** Block schließen, denke ich. – EpicPandaForce

Antwort

8

Es wird nur eine Variable im Klassenbereich auf null initialisiert. Sie befinden sich in einem Methodenbereich, daher müssen Sie die Variable explizit auf null initialisieren.

Wenn die Variable auf Klassenebene definiert ist, wird sie auf Null initialisiert.

+0

macht Sinn. In welchem ​​Methodenumfang gibt Java den Wert für sich selbst an? Ist es ein unbekannter Müllwert? – davison

+3

Beachten Sie, dass es kein * Objekt * initialisiert - es initialisiert eine * Variable *. Sie sind sehr unterschiedliche Dinge. –

+0

vereinbart! Es initialisiert die Referenz auf das Objekt. – davison