Wie man prüft, ob eine Variable in Java initialisiert ist

JavaJavaBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

In diesem Lab lernen Sie, wie Sie prüfen können, ob eine Variable in Java initialisiert ist. Wir werden untersuchen, wie man null-Werte und Standardwerte für verschiedene Datentypen erkennt, was für die Vermeidung gängiger Fehler wie NullPointerException unerlässlich ist.

Durch praktische Beispiele üben Sie das Prüfen auf null und das Verständnis der Standardwerte, die primitiven und Objekttypen zugewiesen werden. Sie lernen auch, wie Sie nicht initialisierte Felder in Klassen behandeln, um sicherzustellen, dass Ihre Java-Programme robust und fehlerfrei sind.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL java(("Java")) -.-> java/BasicSyntaxGroup(["Basic Syntax"]) java(("Java")) -.-> java/DataStructuresGroup(["Data Structures"]) java/BasicSyntaxGroup -.-> java/data_types("Data Types") java/BasicSyntaxGroup -.-> java/variables("Variables") java/BasicSyntaxGroup -.-> java/if_else("If...Else") java/DataStructuresGroup -.-> java/arrays("Arrays") subgraph Lab Skills java/data_types -.-> lab-559996{{"Wie man prüft, ob eine Variable in Java initialisiert ist"}} java/variables -.-> lab-559996{{"Wie man prüft, ob eine Variable in Java initialisiert ist"}} java/if_else -.-> lab-559996{{"Wie man prüft, ob eine Variable in Java initialisiert ist"}} java/arrays -.-> lab-559996{{"Wie man prüft, ob eine Variable in Java initialisiert ist"}} end

Prüfung auf Null- oder Standardwerte

In diesem Schritt werden wir untersuchen, wie man in Java auf null-Werte oder Standardwerte prüft. Das Verständnis, wie man null-Werte behandelt, ist in der Java-Programmierung von entscheidender Bedeutung, um Fehler wie NullPointerException zu vermeiden. Auch die Kenntnis der Standardwerte ist wichtig, da sie Variablen zugewiesen werden, wenn diese nicht explizit initialisiert werden.

In Java haben primitive Datentypen (wie int, boolean, double usw.) Standardwerte, während Objekttypen (wie String, Arrays, benutzerdefinierte Klassen) einen Standardwert von null haben.

Lassen Sie uns ein einfaches Java-Programm erstellen, um das Prüfen auf null und das Verständnis der Standardwerte zu demonstrieren.

  1. Öffnen Sie die Datei HelloJava.java im WebIDE-Editor. Wenn Sie das vorherige Lab abgeschlossen haben, sollte diese Datei bereits in Ihrem ~/project-Verzeichnis vorhanden sein.

  2. Ersetzen Sie den vorhandenen Code in HelloJava.java durch folgenden Code:

    public class HelloJava {
    
        static int defaultInt;
        static boolean defaultBoolean;
        static String defaultString;
    
        public static void main(String[] args) {
            System.out.println("Default int value: " + defaultInt);
            System.out.println("Default boolean value: " + defaultBoolean);
            System.out.println("Default String value: " + defaultString);
    
            String myString = null;
            System.out.println("My string value: " + myString);
    
            // Example of checking for null
            if (myString == null) {
                System.out.println("My string is null.");
            } else {
                System.out.println("My string is not null.");
            }
        }
    }

    Schauen wir uns die neuen Teile dieses Codes an:

    • static int defaultInt;: Wir deklarieren eine statische Ganzzahlvariable defaultInt ohne sie zu initialisieren. Da es sich um eine statische Variable eines primitiven Typs handelt, wird ihr der Standardwert zugewiesen.
    • static boolean defaultBoolean;: Ebenso wird eine statische boolesche Variable defaultBoolean deklariert und erhält ihren Standardwert.
    • static String defaultString;: Eine statische String-Variable defaultString wird deklariert. Da String ein Objekttyp ist, ist sein Standardwert null.
    • System.out.println("Default int value: " + defaultInt);: Diese Zeile gibt den Standardwert der Ganzzahl aus.
    • System.out.println("Default boolean value: " + defaultBoolean);: Diese Zeile gibt den Standardwert des booleschen Typs aus.
    • System.out.println("Default String value: " + defaultString);: Diese Zeile gibt den Standardwert des Strings aus.
    • String myString = null;: Wir deklarieren explizit eine String-Variable myString und weisen ihr den Wert null zu.
    • System.out.println("My string value: " + myString);: Dies gibt den Wert von myString aus.
    • if (myString == null): Dies ist eine if-Anweisung, die prüft, ob die Variable myString gleich null ist. Dies ist die Standardmethode, um zu prüfen, ob ein Objektverweis auf nichts zeigt.
  3. Speichern Sie die Datei HelloJava.java (Strg+S oder Cmd+S).

  4. Kompilieren Sie das Programm im Terminal:

    javac HelloJava.java

    Wenn keine Fehler auftreten, wird die Datei HelloJava.class aktualisiert.

  5. Führen Sie das kompilierte Programm aus:

    java HelloJava

    Sie sollten eine Ausgabe ähnlich der folgenden sehen:

    Default int value: 0
    Default boolean value: false
    Default String value: null
    My string value: null
    My string is null.

    Diese Ausgabe zeigt die Standardwerte für int (0), boolean (false) und String (null). Sie bestätigt auch, dass unsere Variable myString tatsächlich null ist und die if-Bedingung dies korrekt erkannt hat.

Das Verständnis von null-Werten und Standardwerten ist ein grundlegender Schritt beim Schreiben robuster Java-Codes. Im nächsten Schritt werden wir Tests mit verschiedenen Datentypen durchführen.

Test mit verschiedenen Datentypen

In diesem Schritt erweitern wir unser Verständnis von Java, indem wir mit verschiedenen Datentypen arbeiten. Java verfügt über verschiedene Datentypen, um unterschiedliche Arten von Informationen wie Zahlen, Text und Wahrheitswerte zu speichern.

Es gibt zwei Hauptkategorien von Datentypen in Java:

  1. Primitive Datentypen: Dies sind grundlegende Datentypen, die einfache Werte speichern. Beispiele sind int (für Ganzzahlen), double (für Dezimalzahlen), boolean (für Wahrheitswerte), char (für einzelne Zeichen) usw.
  2. Referenzdatentypen: Dies sind Datentypen, die auf Objekte verweisen. Beispiele sind String, Arrays und selbst erstellte Klassen.

Lassen Sie uns unser HelloJava.java-Programm ändern, um verschiedene Datentypen zu verwenden und anzuzeigen.

  1. Öffnen Sie die Datei HelloJava.java im WebIDE-Editor.

  2. Ersetzen Sie den vorhandenen Code durch folgenden Code:

    public class HelloJava {
    
        public static void main(String[] args) {
            // Primitive Data Types
            int age = 30;
            double price = 19.99;
            boolean isJavaFun = true;
            char initial = 'J';
    
            System.out.println("Age: " + age);
            System.out.println("Price: " + price);
            System.out.println("Is Java fun? " + isJavaFun);
            System.out.println("Initial: " + initial);
    
            // Reference Data Type (String)
            String greeting = "Hello, LabEx!";
            System.out.println("Greeting: " + greeting);
    
            // Reference Data Type (Array)
            int[] numbers = {1, 2, 3, 4, 5};
            System.out.print("Numbers: ");
            for (int i = 0; i < numbers.length; i++) {
                System.out.print(numbers[i] + " ");
            }
            System.out.println(); // Print a newline at the end
        }
    }

    Schauen wir uns die neuen Variablen und den Code an:

    • int age = 30;: Deklariert eine Ganzzahlvariable age und weist ihr den Wert 30 zu.
    • double price = 19.99;: Deklariert eine Double-Variable price und weist ihr den Wert 19,99 zu.
    • boolean isJavaFun = true;: Deklariert eine boolesche Variable isJavaFun und weist ihr den Wert true zu.
    • char initial = 'J';: Deklariert eine Zeichenvariable initial und weist ihr das Zeichen 'J' zu. Beachten Sie, dass Zeichen in einfachen Anführungszeichen stehen.
    • String greeting = "Hello, LabEx!";: Deklariert eine String-Variable greeting und weist ihr einen Textwert zu. Beachten Sie, dass Strings in doppelten Anführungszeichen stehen.
    • int[] numbers = {1, 2, 3, 4, 5};: Deklariert ein Array von Ganzzahlen namens numbers und initialisiert es mit Werten. Ein Array ist eine Sammlung von Elementen des gleichen Datentyps.
    • Die for-Schleife durchläuft das numbers-Array und gibt jedes Element aus.
  3. Speichern Sie die Datei HelloJava.java.

  4. Kompilieren Sie das Programm im Terminal:

    javac HelloJava.java
  5. Führen Sie das kompilierte Programm aus:

    java HelloJava

    Sie sollten eine Ausgabe ähnlich der folgenden sehen:

    Age: 30
    Price: 19.99
    Is Java fun? true
    Initial: J
    Greeting: Hello, LabEx!
    Numbers: 1 2 3 4 5

    Diese Ausgabe zeigt, wie Java verschiedene primitive und Referenzdatentypen verarbeitet und anzeigt. Sie können sehen, dass jede Variable ihren zugewiesenen Wert entsprechend ihrem Typ speichert und ausgibt.

In diesem Schritt haben Sie das Deklarieren und Verwenden verschiedener Datentypen in Java geübt. Das Verständnis von Datentypen ist grundlegend für das Speichern und Manipulieren von Informationen in Ihren Programmen. Im nächsten Schritt werden wir uns mit der Behandlung nicht initialisierter Felder befassen.

Umgang mit nicht initialisierten Feldern

In diesem Schritt werden wir uns darauf konzentrieren, zu verstehen, wie Java Felder (Variablen innerhalb einer Klasse) behandelt, die nicht explizit initialisiert werden. Dies baut auf unserer vorherigen Diskussion über Standardwerte auf.

In Java werden Instanzvariablen (Felder, die zu einem Objekt einer Klasse gehören) und statische Variablen (Felder, die zur Klasse selbst gehören) automatisch mit Standardwerten versehen, wenn sie bei der Deklaration nicht initialisiert werden. Lokale Variablen (Variablen, die innerhalb einer Methode deklariert werden) erhalten hingegen keine Standardwerte und müssen explizit initialisiert werden, bevor sie verwendet werden.

Lassen Sie uns eine neue Klasse erstellen, um dieses Konzept zu demonstrieren.

  1. Klicken Sie im WebIDE-Dateiexplorer links mit der rechten Maustaste im Verzeichnis ~/project, wählen Sie "Neue Datei" und geben Sie FieldExample.java ein.

  2. Öffnen Sie die Datei FieldExample.java im Editor und fügen Sie folgenden Code hinzu:

    public class FieldExample {
    
        // Instance variables (fields) - automatically get default values
        int instanceInt;
        String instanceString;
        boolean instanceBoolean;
    
        // Static variables (fields) - automatically get default values
        static double staticDouble;
        static char staticChar;
    
        public static void main(String[] args) {
            // Local variables - must be initialized before use
            int localInt;
            // String localString; // If uncommented and used without init, would cause a compile error
    
            // Creating an object of FieldExample to access instance variables
            FieldExample obj = new FieldExample();
    
            System.out.println("Instance int: " + obj.instanceInt);
            System.out.println("Instance String: " + obj.instanceString);
            System.out.println("Instance boolean: " + obj.instanceBoolean);
    
            System.out.println("Static double: " + staticDouble);
            System.out.println("Static char: " + staticChar);
    
            // Example of using a local variable after initialization
            localInt = 100;
            System.out.println("Local int: " + localInt);
    
            // The following line would cause a compile-time error if localString was uncommented
            // System.out.println("Local String: " + localString);
        }
    }

    Schauen wir uns den Code an:

    • Wir deklarieren Instanzvariablen (instanceInt, instanceString, instanceBoolean) und statische Variablen (staticDouble, staticChar) ohne sie zu initialisieren. Java wird automatisch ihre Standardwerte zuweisen.
    • Wir deklarieren eine lokale Variable localInt innerhalb der main-Methode.
    • Wir erstellen ein Objekt obj der Klasse FieldExample, um auf die Instanzvariablen zuzugreifen. Statische Variablen können direkt über den Klassennamen (staticDouble, staticChar) zugegriffen werden.
    • Wir geben die Werte der Instanz- und statischen Variablen aus. Sie werden ihre Standardwerte sehen.
    • Wir initialisieren die lokale Variable localInt explizit, bevor wir sie verwenden.
    • Die auskommentierte Zeile // String localString; und die Zeile darunter zeigen, was passieren würde, wenn Sie versuchen würden, eine nicht initialisierte lokale Variable zu verwenden – der Java-Compiler würde Ihnen einen Fehler ausgeben.
  3. Speichern Sie die Datei FieldExample.java.

  4. Kompilieren Sie das Programm im Terminal:

    javac FieldExample.java

    Wenn die Kompilierung erfolgreich ist (keine Fehler), wird die Datei FieldExample.class erstellt.

  5. Führen Sie das kompilierte Programm aus:

    java FieldExample

    Sie sollten eine Ausgabe ähnlich der folgenden sehen:

    Instance int: 0
    Instance String: null
    Instance boolean: false
    Static double: 0.0
    Static char:
    Local int: 100

    Diese Ausgabe bestätigt, dass Instanz- und statische Variablen Standardwerte erhalten (0 für int, null für String, false für boolean, 0,0 für double und ein Nullzeichen für char), wenn sie nicht initialisiert werden. Sie zeigt auch, dass eine lokale Variable explizit initialisiert werden muss, bevor sie verwendet wird.

Das Verständnis des Unterschieds in der Behandlung nicht initialisierter Instanz- und statischer Variablen im Vergleich zu lokalen Variablen in Java ist von entscheidender Bedeutung, um häufige Programmierfehler zu vermeiden.

Zusammenfassung

In diesem Lab haben wir gelernt, wie man prüft, ob eine Variable in Java initialisiert ist, indem wir Standardwerte verstehen und auf null prüfen. Wir haben untersucht, wie primitive Datentypen Standardwerte erhalten, wenn sie nicht explizit initialisiert werden, während Objekttypen standardmäßig auf null gesetzt werden. Wir haben das Prüfen auf null mit dem Gleichheitsoperator (==) geübt und dies anhand eines einfachen Java-Programms demonstriert.

Wir haben auch gelernt, wie wichtig es ist, nicht initialisierte Felder zu behandeln, um potenzielle Fehler zu vermeiden und die Robustheit unserer Java-Anwendungen sicherzustellen. Indem wir Standardwerte verstehen und geeignete Prüfungen auf null implementieren, können wir zuverlässigeres und vorhersagbareres Code schreiben.