20% Rabatt mit Code ERSTIS26
4 min Lesezeit 04. Juni 2026

Java Konstanten final: Anleitung für Einsteiger

In diesem Guide erfährst du, wie du in Java Konstanten mit dem Schlüsselwort final deklarierst und korrekt einsetzt.

Marcel Schmidtpeter Von Marcel Schmidtpeter 04. Juni 2026
Java Konstanten final: Anleitung für Einsteiger

Du schreibst eine Methode, die die Mehrwertsteuer berechnet. Irgendwo tief im Code steht die Zahl `19`. Drei Monate später soll der Steuersatz auf `7` geändert werden - und du suchst dich dumm und dämlich, weil diese `19` an fünf verschiedenen Stellen auftaucht. Genau hier helfen Java Konstanten final - sie binden einen Wert an einen aussagekräftigen Namen und verhindern versehentliche Änderungen.

Was sind Konstanten in Java?

Eine Konstante in Java ist eine Variable, deren Wert nach der Initialisierung nicht mehr verändert werden kann. Stell dir vor, du hast einen Tresor: Du legst etwas hinein, verschließt ihn - und ab da kommt niemand mehr an den Inhalt. In Java erzeugst du solche "Tresore" mit dem Schlüsselwort `final`.

Warum ist das nützlich? Weil Konstanten deinen Code lesbarer und wartbarer machen. Anstatt eine kryptische Zahl wie `3.14159` durch den Code zu streuen, schreibst du `PI`. Jeder weiß sofort, was gemeint ist. Und falls sich der Wert jemals ändern sollte (was bei PI unwahrscheinlich ist, bei Steuersätzen aber passieren kann), änderst du ihn an genau einer Stelle.

Merke: Eine Konstante verhindert, dass ein Wert versehentlich überschrieben wird. Sie macht Code lesbarer und wartbarer.

Wie deklariert man Java Konstanten final?

Du deklarierst Java Konstanten final, indem du das Schlüsselwort `final` vor den Datentyp setzt. Die Syntax ist simpel:

java
final Datentyp NAME = wert;

Ein konkretes Beispiel:

java
final int MWST_SATZ = 19;

final double PI = 3.14159265;

final String FEHLERMELDUNG = "Eingabe ungueltig";

Achte auf die Namenskonvention: Konstanten werden in Java durchgehend in GROSSBUCHSTABEN geschrieben, Wörter werden mit Unterstrichen getrennt. Das ist kein Zwang vom Compiler, sondern eine starke Konvention, die du in den offiziellen Oracle Java Code Conventions findest. Warum? Weil du sofort siehst: "Aha, das ist eine Konstante - den darf ich nicht ändern."

Was passiert bei einem Zuweisungsversuch?

Probierst du, einer `final`-Variable einen neuen Wert zuzuweisen, greift der Compiler sofort:

java
final int MAX_WERT = 100;
MAX_WERT = 200;  // Compilerfehler!

Du bekommst eine Fehlermeldung wie *„cannot assign a value to final variable MAX_WERT"*. Der Code lässt sich gar nicht erst kompilieren. Das ist ein Schutzmechanismus, der Fehler bereits zur Entwicklungszeit abfängt.

Wann nutzt man `static final`?

Die Kombination `static final` ist der Standard für globale Konstanten. Was bedeutet das? `static` macht die Variable zu einer Klassenvariablen (sie existiert nur einmal pro Klasse), `final` macht sie unveränderbar. Zusammen ergeben sie eine echte Konstante, die alle Objekte einer Klasse teilen.

java
public class Konfiguration {

  // Klassenkonstante - einmal im Speicher, fuer alle zugaenglich
  public static final String APP_NAME = "MeinProgramm";
  public static final double MWST = 0.19;
  public static final int MAX_LOGIN_VERSUCHE = 3;
}

Der Unterschied: Ohne `static` bekommt jedes Objekt seine eigene Kopie der Konstanten. Mit `static` existiert der Wert genau einmal - was Speicher spart und semantisch sinnvoller ist. Schließlich ändert sich die Mehrwertsteuer nicht pro Objekt.

Art

Deklaration

Speicher

typischer Use Case

Lokale Konstante

`final int x = 5;`

im Stack

Methodenlokale Schwellwerte

Instanzkonstante

`final int x = 5;` (in Klasse)

pro Objekt

Objektspezifische Fixwerte

Klassenkonstante

`static final int X = 5;`

einmal pro Klasse

Universelle Konstanten

Aufgerufen wird eine Klassenkonstante über den Klassennamen:

java
double preisNetto = 100.0;

double preisBrutto = preisNetto * (1 + Konfiguration.MWST);

Wie funktionieren Java Konstanten final in der Praxis?

In der Praxis definierst du Konstanten oft als `public static final`, um universelle Werte wie Steuersätze, Pfade oder Konfigurationen zentral zu verwalten. Statt "Magic Numbers" (unbenannte Zahlen) durch den Code zu streuen, gruppierst du diese Werte logisch.

Stell dir vor, du entwickelst ein kleines Bestellsystem:

java
public class Bestellsystem {
  // Konstanten definieren
  public static final double MWST_NORMAL = 0.19;
  public static final double MWST_ERMAESSIGT = 0.07;
  public static final double VERSANDKOSTEN_FREI_AB = 50.0;
  public static final double VERSANDKOSTEN = 4.99;
  public static final String WAeHRUNG = "EUR";

  public static double berechneGesamtpreis(double nettopreis, boolean ermaessigt) {
    double mwstSatz = ermaessigt ? MWST_ERMAESSIGT : MWST_NORMAL;
    double bruttopreis = nettopreis * (1 + mwstSatz);

    if (nettopreis < VERSANDKOSTEN_FREI_AB) {
      bruttopreis += VERSANDKOSTEN;
    }

    return bruttopreis;
  }

  public static void main(String[] args) {
    double preis1 = Bestellsystem.berechneGesamtpreis(29.99, false);
    double preis2 = Bestellsystem.berechneGesamtpreis(15.0, true);

    System.out.println("Preis 1: " + preis1 + " " + WAeHRUNG);
    System.out.println("Preis 2: " + preis2 + " " + WAeHRUNG);
  }
}

Falls die Versandkosten sich ändern, musst du nur `VERSANDKOSTEN` anpassen - eine Stelle statt zwanzig.

Welche Fallstricke gibt es bei Java Konstanten final?

Bei Java Konstanten final gibt es speziell bei der Initialisierung und bei Referenztypen wichtige Fallstricke zu beachten.

Fehler 1: Konstante nicht initialisiert

Eine `final`-Variable muss zwingend einen Wert erhalten - entweder direkt bei der Deklaration oder im Konstruktor (bei Instanzvariablen):

java
// Falsch: Kein Wert, Compilerfehler
final int MAX_PUNKTE;

java
// Richtig: Sofort initialisieren
final int MAX_PUNKTE = 100;

Fehler 2: Konstante in Schleifen überschreiben wollen

Der Klassiker in `for`-Schleifen: Du versuchst, eine finale Variable neu zuzuweisen.

java
// Falsch: final in Schleife neu zuweisen
final int counter = 0;
for (int i = 0; i < 5; i++) {
  counter = counter + 1;  // Compilerfehler!
}

Warum das nicht funktioniert? Weil `final` eben genau diese Neuzuweisung verbietet - egal ob in einer Schleife oder sonst wo.

Fehler 3: final bei Referenztypen missverstanden

Bei Objekten und Arrays schützt `final` nur die Referenz, nicht den Inhalt. Stell dir vor, du klebst einen Zettel auf eine Schachtel - der Zettel bleibt festkleben, aber du kannst die Schachtel trotzdem öffnen und den Inhalt austauschen.

java
final int[] zahlen = {1, 2, 3};
zahlen[0] = 99;        // Erlaubt! Inhalt aenderbar
zahlen = new int[5];   // Compilerfehler! Referenz geschuetzt

Das Gleiche gilt für Listen, Maps und alle anderen Objekte. `final` bedeutet nicht "unveränderliches Objekt", sondern "unveränderliche Referenz". Wenn du wirklich unveränderliche Sammlungen brauchst, nutzt du Methoden wie `List.of()` (seit Java 9) oder `Collections.unmodifiableList()`.

FAQ: Häufige Fragen zu Java Konstanten final

Kann ich final bei Methodenparametern nutzen?

Ja. Ein `final`-Parameter kann innerhalb der Methode nicht neu zugewiesen werden. Das kann hilfreich sein, um versehentliche Zuweisungen zu vermeiden. Die meisten Entwickler nutzen das allerdings selten, da Parameter ohnehin als "Eingabe" verstanden werden.

java
public void verarbeite(final String eingabe) {
  eingabe = "was anderes"; // Compilerfehler!
  System.out.println(eingabe);
}

Was ist der Unterschied zwischen final und static final?

`final` macht eine Variable unveränderbar. `static` macht sie zu einer Klassenvariablen. In der Praxis kombinierst du beides zu `static final`, da Konstanten typischerweise klassenweit gelten sollen - nicht pro Objekt. Details zu statischen Variablen findest du im Java Tutorial von W3Schools.

Kann ich eine final-Variable im Konstruktor setzen?

Ja, bei Instanzvariablen funktioniert das. Das nennt sich blank final - eine finale Variable ohne Initialwert, die genau einmal im Konstruktor gesetzt werden muss:

java
public class Benutzer {

  private final String benutzername;

  public Benutzer(String name) {
    this.benutzername = name; // Einmalige Zuweisung erlaubt
  }
}

Das ist nützlich, wenn der Wert erst zur Laufzeit feststeht, danach aber unveränderlich sein soll (z. B. eine ID beim Erstellen eines Objekts).

Gibt es Konstanten in anderen Sprachen auch?

Ja. In C++ nutzt du `const`, in JavaScript `const`, in TypeScript `readonly`. Das Konzept ist universell - nur das Schlüsselwort unterscheidet sich. Java hat mit `final` eine besonders strikte Variante, die bereits zur Compile-Zeit prüft.

Fazit

Java Konstanten final sind eines der einfachsten, aber nützlichsten Sprachmittel in Java. Ein `static final` vor einer Variablen macht sie zur echten Konstante - unveränderbar, klassenweit verfügbar und mit einem aussagekräftigen Namen versehen. Du vermeidest magic numbers, machst deinen Code wartbarer und fängst Fehler bereits zur Compile-Zeit ab.

Die wichtigsten Regeln: Konstanten in GROSSBUCHSTABEN, direkt initialisieren, und immer `static final` für Klassenkonstanten nutzen. Bei Referenztypen daran denken: `final` schützt die Referenz, nicht den Inhalt.

Wenn du beim Thema Java oder Programmieren allgemein Unterstützung brauchst - egal ob in der Ausbildung, im Studium oder beim Berufseinstieg - schau dir study-it.education an. Dort bekommst du individuelle Nachhilfe, die genau auf deinen Wissensstand zugeschnitten ist.


Erstgespräch · 0 € · 15 min

Brauchst du jemand, der das mit dir durchgeht?

Statt nochmal lesen: 15 min mit einem Senior-Dev.

Kostenloses Erstgespräch buchen →
Über den Autor
Marcel Schmidtpeter
Marcel Schmidtpeter

In diesem Guide erfährst du, wie du in Java Konstanten mit dem Schlüsselwort final deklarierst und korrekt einsetzt.

marcel.schmidtpeter@study-it.education →
Weiterlesen

Mehr Lesestoff