Heim > Java > javaLernprogramm > Hauptteil

Warum löst Java einen Fehler für nicht initialisierte lokale Variablen aus, aber nicht für nicht initialisierte Instanzvariablen?

Susan Sarandon
Freigeben: 2024-10-24 18:47:02
Original
286 Leute haben es durchsucht

Why Does Java Raise an Error for Uninitialized Local Variables but Not for Uninitialized Instance Variables?

Nicht initialisierte Variablen und Mitglieder in Java

Beachten Sie den folgenden Ausschnitt:

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 initialized"
    }
}
Nach dem Login kopieren

Obwohl sowohl „b“ als auch „c“ nicht initialisiert sind, löst der Compiler einen Kompilierzeitfehler für „c“ aus, nicht jedoch für „b“. Dieser Unterschied ergibt sich aus den Regeln der Sprache zum Initialisieren von Instanzvariablen und lokalen Variablen.

Instanzvariablen vom Objekttyp (wie „a“ und „b“) werden standardmäßig auf Null initialisiert, wenn sie nicht explizit initialisiert werden. Aus diesem Grund führt der Zugriff auf „b.notify()“ nicht zu einem unmittelbaren Fehler, da es praktisch äquivalent zu „null.notify()“ ist. Dieser Zugriff löst jedoch letztendlich eine NullPointerException aus, wenn der Code ausgeführt wird.

Im Gegensatz dazu werden lokale Variablen vom Objekttyp standardmäßig nicht initialisiert. Der Versuch, auf eine nicht initialisierte lokale Variable wie „c“ zuzugreifen, führt direkt zu einem Fehler bei der Kompilierung. Diese strenge Anforderung stellt sicher, dass lokale Variablen vor ihrer Verwendung immer ordnungsgemäß initialisiert werden.

Das obige ist der detaillierte Inhalt vonWarum löst Java einen Fehler für nicht initialisierte lokale Variablen aus, aber nicht für nicht initialisierte Instanzvariablen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!