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.
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.
Öffnen Sie die Datei
HelloJava.javaim WebIDE-Editor. Wenn Sie das vorherige Lab abgeschlossen haben, sollte diese Datei bereits in Ihrem~/project-Verzeichnis vorhanden sein.Ersetzen Sie den vorhandenen Code in
HelloJava.javadurch 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 GanzzahlvariabledefaultIntohne 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 VariabledefaultBooleandeklariert und erhält ihren Standardwert.static String defaultString;: Eine statische String-VariabledefaultStringwird deklariert. DaStringein Objekttyp ist, ist sein Standardwertnull.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-VariablemyStringund weisen ihr den Wertnullzu.System.out.println("My string value: " + myString);: Dies gibt den Wert vonmyStringaus.if (myString == null): Dies ist eineif-Anweisung, die prüft, ob die VariablemyStringgleichnullist. Dies ist die Standardmethode, um zu prüfen, ob ein Objektverweis auf nichts zeigt.
Speichern Sie die Datei
HelloJava.java(Strg+S oder Cmd+S).Kompilieren Sie das Programm im Terminal:
javac HelloJava.javaWenn keine Fehler auftreten, wird die Datei
HelloJava.classaktualisiert.Führen Sie das kompilierte Programm aus:
java HelloJavaSie 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) undString(null). Sie bestätigt auch, dass unsere VariablemyStringtatsächlichnullist und dieif-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.
Testen 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:
- 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. - 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.
Öffnen Sie die Datei
HelloJava.javaim WebIDE-Editor.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 Ganzzahlvariableageund weist ihr den Wert 30 zu.double price = 19.99;: Deklariert eine Double-Variablepriceund weist ihr den Wert 19,99 zu.boolean isJavaFun = true;: Deklariert eine boolesche VariableisJavaFunund weist ihr den Werttruezu.char initial = 'J';: Deklariert eine Zeichenvariableinitialund weist ihr das Zeichen 'J' zu. Beachten Sie, dass Zeichen in einfachen Anführungszeichen stehen.String greeting = "Hello, LabEx!";: Deklariert eine String-Variablegreetingund 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 namensnumbersund initialisiert es mit Werten. Ein Array ist eine Sammlung von Elementen des gleichen Datentyps.- Die
for-Schleife durchläuft dasnumbers-Array und gibt jedes Element aus.
Speichern Sie die Datei
HelloJava.java.Kompilieren Sie das Programm im Terminal:
javac HelloJava.javaFühren Sie das kompilierte Programm aus:
java HelloJavaSie 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 5Diese 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 uninitialisierten 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.
Klicken Sie im WebIDE-Dateiexplorer links mit der rechten Maustaste im Verzeichnis
~/project, wählen Sie "Neue Datei" und geben SieFieldExample.javaein.Öffnen Sie die Datei
FieldExample.javaim 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
localIntinnerhalb dermain-Methode. - Wir erstellen ein Objekt
objder KlasseFieldExample, 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
localIntexplizit, 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.
- Wir deklarieren Instanzvariablen (
Speichern Sie die Datei
FieldExample.java.Kompilieren Sie das Programm im Terminal:
javac FieldExample.javaWenn die Kompilierung erfolgreich ist (keine Fehler), wird die Datei
FieldExample.classerstellt.Führen Sie das kompilierte Programm aus:
java FieldExampleSie sollten eine Ausgabe ähnlich der folgenden sehen:
Instance int: 0 Instance String: null Instance boolean: false Static double: 0.0 Static char: Local int: 100Diese 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.



