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";
}Konventionell verwenden Konstantennamen UPPER_SNAKE_CASE, um sie von regulären Variablen zu unterscheiden. Da sie sowohl static als auch final sind, greifst du über den Klassennamen auf sie zu, und ihre Werte ändern sich garantiert nie:
System.out.println(GameSettings.MAX_PLAYERS); // 4
// GameSettings.MAX_PLAYERS = 8; // Fehler! Kann nicht geändert werdenKonstanten werden typischerweise als public deklariert, weil sie in der gesamten Anwendung gemeinsam genutzt werden sollen. Denke an Werte wie Math.PI – es handelt sich um eine öffentliche statische finale 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
EinfachLass uns ein MathConstants-Dienstprogramm erstellen, das wichtige mathematische Werte als Konstanten speichert, zusammen mit einem CircleCalculator, der diese Konstanten für Berechnungen verwendet.
Du wirst zwei Dateien erstellen, um deinen Code zu organisieren:
MathConstants.java: Erstelle eine Klasse, die mathematische Konstanten mithilfe vonpublic static final-Feldern enthält:PImit dem Wert3.14159E(Eulersche Zahl) mit dem Wert2.71828GOLDEN_RATIOmit dem Wert1.61803
Main.java: Verwende deine Konstanten, um Kreisberechnungen durchzuführen. Du erhältst einen Radius als Eingabe und gibst drei Zeilen aus:- Die Fläche des Kreises:
Area: [value] - Der Umfang des Kreises:
Circumference: [value] - Der Durchmesser skaliert mit dem goldenen Schnitt:
Golden Diameter: [value]
- Die Fläche des Kreises:
Für die Berechnungen:
- Fläche = PI * Radius * Radius
- Umfang = 2 * PI * Radius
- Goldener Durchmesser = 2 * Radius * GOLDEN_RATIO
Du erhältst eine Eingabe: den Radius (double).
Formatiere alle Ausgabewerte mit String.format("%.2f", value) auf 2 Dezimalstellen. Greife über den Klassennamen auf deine Konstanten zu, zum Beispiel mit MathConstants.PI.
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 Schlüsselwort thisMethodenFelder (Attribute)KonstruktormethodeÜberladen von KonstruktorenRückblick – Einfacher Taschenrechner4Vererbung
Grundlegende Vererbung (extends)Das Schlüsselwort superÜberschreiben von Methoden (@Override)KonstruktorverkettungDie Object-KlasseEinfach- und mehrstufige VererbungWarum keine Mehrfachvererbung von KlassenRückblick – Mitarbeiterhierarchie7Spezielle Methoden & Object-Klasse
toString()-Methodeequals() und hashCode()clone()-MethodecompareTo() und ComparableComparator-SchnittstelleRückblick – Benutzerdefinierte Sortierung2Zugriffsmodifikatoren & Kapselung
Übersicht der ZugriffsebenenGetter- und Setter-MethodenInformationsverbergungDas Schlüsselwort finalRückblick – Bankkontoverwaltung5Polymorphismus
Grundlagen der MethodenüberladungMethodenüberschreibung (Laufzeit)Upcasting und DowncastingDer instanceof-OperatorAbstrakte Klassen und MethodenRückblick – Formrechner8Fortgeschrittene OOP-Konzepte
Komposition vs. VererbungAggregation vs. KompositionInnere, verschachtelte & anonyme KlassenEnums und Enum-MethodenRecords (Java 16+)Versiegelte Klassen (Java 17+)11Entwurfsmuster Teil 1
Einführung in EntwurfsmusterSingleton-MusterFactory-MusterBuilder-MusterObserver-MusterStrategie-Muster14Abschließende Herausforderungen
E-Learning-PlattformBankingsystemEntwicklung einer SpielfigurFahrzeugvermietungsdienst3Klassen-Props & statische Member
Instanz- vs. statische VariablenStatische MethodenStatische BlöckeKonstanten (static final)Wiederholung – Counter & Utility6Schnittstellen & abstrakte Klassen
Einführung in InterfacesInterfaces implementierenMehrere Interfaces implementierenDefault & Static in InterfacesAbstrakte Klassen vs. InterfacesFunktionale InterfacesRückblick – ZahlungssystemÜbe selbstständig: Online-Java-Compiler