Konstanten (static final)
Teil des Abschnitts Objektorientierte Programmierung der Java-Journey von Coddy — Lektion 18 von 87.
Die Kombination von static und final erzeugt eine Konstante – einen Wert, der zur Klasse gehört und niemals geändert werden kann. Dies ist die Standardmethode, um Konstanten in Java zu definieren.
public class GameSettings {
public static final int MAX_PLAYERS = 4;
public static final double GRAVITY = 9.81;
public static final String GAME_TITLE = "Space Adventure";
}Konventionsgemäß verwenden Konstantennamen UPPER_SNAKE_CASE, um sie von regulären Variablen zu unterscheiden. Da sie sowohl static als auch final sind, greift man über den Klassennamen auf sie zu und es ist garantiert, dass sich ihre Werte niemals ändern:
System.out.println(GameSettings.MAX_PLAYERS); // 4
// GameSettings.MAX_PLAYERS = 8; // Fehler! Kann nicht geändert werdenKonstanten werden normalerweise als public deklariert, da sie dazu gedacht sind, in Ihrer gesamten Anwendung gemeinsam genutzt zu werden. Denken Sie an Werte wie Math.PI – es handelt sich um eine public static final Konstante, die jeder Code verwenden kann.
Warum sollte man Konstanten anstelle von fest codierten Werten verwenden? Wenn Sie 4 überall in Ihrem Code schreiben und diese später in 6 ändern müssen, müssten Sie jedes Vorkommen finden und aktualisieren. Mit einer Konstante wie MAX_PLAYERS ändern Sie sie an einer einzigen Stelle.
Konstanten machen den Code zudem lesbarer – MAX_PLAYERS ist klarer als eine mysteriöse 4.
Aufgabe
EinfachLassen Sie uns ein MathConstants-Utility erstellen, das wichtige mathematische Werte als Konstanten speichert, zusammen mit einem CircleCalculator, der diese Konstanten für Berechnungen verwendet.
Sie werden zwei Dateien erstellen, um Ihren Code zu organisieren:
MathConstants.java: Erstellen Sie eine Klasse, die mathematische Konstanten unter Verwendung vonpublic static finalFeldern enthält:PImit dem Wert3.14159E(Eulersche Zahl) mit dem Wert2.71828GOLDEN_RATIOmit dem Wert1.61803
Main.java: Verwenden Sie Ihre Konstanten, um Kreisberechnungen durchzuführen. Sie erhalten einen Radius als Eingabe und geben drei Zeilen aus:- Die Fläche des Kreises:
Area: [value] - Der Umfang des Kreises:
Circumference: [value] - Der mit dem Goldenen Schnitt skalierte Durchmesser:
Golden Diameter: [value]
- Die Fläche des Kreises:
Für die Berechnungen:
- Area = PI * radius * radius
- Circumference = 2 * PI * radius
- Golden Diameter = 2 * radius * GOLDEN_RATIO
Sie erhalten eine Eingabe: den Radius (double).
Formatieren Sie alle Ausgabewerte auf 2 Dezimalstellen mit String.format("%.2f", value). Greifen Sie auf Ihre Konstanten über den Klassennamen zu, wie MathConstants.PI.
Spickzettel
Die Kombination von static und final erzeugt eine Konstante – einen Wert, der zur Klasse gehört und niemals geändert werden kann:
public class GameSettings {
public static final int MAX_PLAYERS = 4;
public static final double GRAVITY = 9.81;
public static final String GAME_TITLE = "Space Adventure";
}Konventionsgemäß verwenden Konstantennamen UPPER_SNAKE_CASE. Greifen Sie über den Klassennamen auf Konstanten zu:
System.out.println(GameSettings.MAX_PLAYERS); // 4
// GameSettings.MAX_PLAYERS = 8; // Fehler! Kann nicht geändert werdenKonstanten werden normalerweise als public deklariert, um in der gesamten Anwendung geteilt zu werden. Sie machen den Code wartbarer und lesbarer, indem sie fest codierte Werte durch aussagekräftige Namen ersetzen.
Probier es selbst
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
double radius = scanner.nextDouble();
// TODO: Berechne die Fläche unter Verwendung von MathConstants.PI
// Formel: PI * radius * radius
// TODO: Berechne den Umfang unter Verwendung von MathConstants.PI
// Formel: 2 * PI * radius
// TODO: Berechne den Goldenen Durchmesser unter Verwendung von MathConstants.GOLDEN_RATIO
// Formel: 2 * radius * GOLDEN_RATIO
// TODO: Gib die Ergebnisse auf 2 Dezimalstellen formatiert aus
// Verwende String.format("%.2f", value) für die Formatierung
// Ausgabeformat:
// Area: [value]
// Circumference: [value]
// Golden Diameter: [value]
}
}Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Objektorientierte Programmierung
1Grundlagen der OOP
Externe DateienEinführung in die OOPKlassen vs. ObjekteDas this-SchlüsselwortMethodenFelder (Attribute)Konstruktor-MethodeKonstruktor-ÜberladungRückblick – Einfacher Taschenrechner4Vererbung
Grundlagen der Vererbung (extends)Das super-SchlüsselwortMethoden überschreiben (@Override)Konstruktor-VerkettungDie Object-KlasseEinfache & mehrstufige VererbungWarum keine Mehrfachvererbung von KlassenZusammenfassung - Mitarbeiter-Hierarchie7Spezielle Methoden & Object-Klasse
toString()-Methodeequals() und hashCode()clone()-MethodecompareTo() und ComparableComparator-InterfaceZusammenfassung – Benutzerdefiniertes Sortieren2Zugriffsmodifikatoren & Kapselung
Überblick über ZugriffsebenenGetter- und Setter-MethodenInformation HidingDas final-SchlüsselwortRückblick – Bankkonto-Manager5Polymorphismus
Grundlagen der MethodenüberladungMethodenüberschreibung (Laufzeit)Upcasting und DowncastingDer instanceof-OperatorAbstrakte Klassen und MethodenZusammenfassung – Formenrechner8Fortgeschrittene OOP-Konzepte
Komposition vs. VererbungAggregation vs. KompositionInnere, geschachtelte & anonyme KlassenEnums und Enum-MethodenRecords (Java 16+)Sealed Classes (Java 17+)11Design Patterns Teil 1
Einführung in Design PatternsSingleton-PatternFactory-PatternBuilder-PatternObserver-PatternStrategy-Pattern14Abschlussherausforderungen
E-Learning-PlattformBanksystemSpielcharakter-EntwicklungFahrzeugvermietung3Klasseneigenschaften & Statische Member
Instanz- vs. statische VariablenStatische MethodenStatische BlöckeKonstanten (static final)Zusammenfassung – Zähler & Utility6Interfaces & Abstrakte Klassen
Einführung in InterfacesInterfaces implementierenImplementierung mehrerer InterfacesDefault- & statische Methoden in InterfacesAbstrakte Klassen vs. InterfacesFunktionale InterfacesZusammenfassung - Zahlungssystem