Heim  >  Artikel  >  Java  >  Warum zeigen nicht initialisierte Variablen und Mitglieder in Java unterschiedliche Verhaltensweisen?

Warum zeigen nicht initialisierte Variablen und Mitglieder in Java unterschiedliche Verhaltensweisen?

Linda Hamilton
Linda HamiltonOriginal
2024-10-25 03:06:30768Durchsuche

Why Do Uninitialized Variables and Members Exhibit Different Behaviors in Java?

Nicht initialisierte Variablen und Mitglieder in Java

In Java können Variablen, die ohne Anfangswert deklariert werden, Bedenken hinsichtlich ihres möglichen Verhaltens zur Laufzeit aufwerfen . Betrachten Sie das folgende Beispiel:

public class TestClass {

    private String a;
    private String b;

    public TestClass() {
        a = "initialized";
    }

    public void doSomething() {
        String c;

        a.notify(); // This is fine
        b.notify(); // This is fine - but will end in an exception
        c.notify(); // "Local variable c may not have been initialised"
    }

}

In diesem Szenario enthält die Klasse zwei Instanzvariablen (a und b) und eine lokale Variable (c) innerhalb der doSomething-Methode. Während der Zugriff auf die initialisierte Instanzvariable a wie erwartet funktioniert, führt die Verwendung der nicht initialisierten Instanzvariablen b oder der lokalen Variablen c zu einer Laufzeitausnahme für b und einem Kompilierungszeitfehler für c.

Warum der Unterschied ?

Die Java-Sprachspezifikation schreibt vor, dass Instanzvariablen von Objekttypen standardmäßig auf Null gesetzt werden, wenn sie nicht initialisiert werden, während lokale Variablen von Objekttypen standardmäßig nicht initialisiert werden. Dies bedeutet, dass der Zugriff auf eine Nullobjektreferenz (wie im Fall von b) zu einer NullPointerException führt.

Für lokale Variablen erfordert der Compiler, dass sie vor der Verwendung explizit initialisiert werden, um potenziell undefiniertes Verhalten zu vermeiden. Diese Prüfung wird während der Kompilierung durchgeführt und führt zu einem Fehler bei der Kompilierung, wenn auf eine nicht initialisierte lokale Variable zugegriffen wird.

Das obige ist der detaillierte Inhalt vonWarum zeigen nicht initialisierte Variablen und Mitglieder in Java unterschiedliche Verhaltensweisen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn