was ist der Unterschied zwischen "final int Jahr = 2023" und "int Jahr = 2023" in Java?

4 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Du kannst später nicht mehr den Wert der Variable ändern.

Der Wert ist quasi "final" und bleibt dann immer 2023

Das Schlüsselwort "final" macht aus der Variablen eine Konstante!
Der Wert einer Variablen ist - wie die Bezeichnung es schon sagt - variabel (read/write).
Der Wert einer Konstanten hingegen eben konstant (read-only) und nicht mehr veränderbar.

AchSo774 
Fragesteller
 24.02.2023, 09:05

Trotzdem finde ich es unnützlich. könntest du mir einen Beispiel zeigen, in welchem Kontext könnte man von diese Funktion einen Vorteil verschaffen ?

0
GrobGeschaetzt  24.02.2023, 12:45
@AchSo774

Der Vorteil ist gar nicht unbedingt für dich, sondern für jemand anders, der vielleicht mal dein Programm übernehmen muss (in einer Firma) und der sich darin zurechtfinden muss. Oder vielleicht auch für dich, wenn du nach 3 Jahren mal wieder in den Quellcode schaust und dir nicht mehr alles geläufig ist.
Ein Programm verständlich zu schreiben, ist eben auch wichtig. Das hat du ja auch gemacht, indem du die Variable "Jahr" genannt hast. Du hättest sie auch "Spinat", "Preis" oder "X17" nennen können - dem Compiler ist das egal. Aber wer dein Programm verstehen will, tut sich mit "Jahr" sicher leichter. Und so hilft es unter Umständen auch beim Verständnis, wenn man gleich bei der Definition weiß, dass ein Wert konstant ist und man sich das nicht mühsam aus dem Programm erarbeiten muss, weil der Wert nirgendwo anders geändert wird.

1

Hey,

final besagt, dass die Variable nach der Deklaration (Zuweisung des Wertes) nicht wieder verändert werden kann.

Mfg Jannick (L1nd)

Woher ich das weiß:eigene Erfahrung – Aktuelles Studium in angewandter Informatik

Das Schlüsselwort final kennzeichnet die Variable als konstant aus. Ihr Wert ist daher nicht mehr nachträglich änderbar.

AchSo774 
Fragesteller
 24.02.2023, 09:05

Trotzdem finde ich es unnützlich. d.h. wenn man Z.B folgendes schreibt: import java.util.Scanner;

public class PieReceipt {

public static void main(String[] args) {

final.int jahr = 1;

jahr = 3;

System.out.println(jahr);

}

}

In diesem Fall wird der Programm einen Error zeigen.

So könntest du mir einen Beispiel zeigen in welchem Kontext könnte man von diese Funktion einen Vorteil verschaffen ?

0
regex9  24.02.2023, 09:44
@AchSo774

Ein klassisches Beispiel sind mathematische Konstanten wie PI. Der Wert soll in diesem Fall nicht änderbar sein.

Konstanten kannst du immer dann verwenden, wenn du weißt, dass sich der Wert in dem Kontext, in dem sie definiert wurde, nicht wieder ändern soll.

Beispiel:

class Person {
  private String name;

  public Person(final String name) {
    this.name = name;
  }
}

Wenn klar ist, dass der Parameter innerhalb des Konstruktors seinen Wert nicht ändern soll, kann er auch als konstant definiert werden.

In diesem Zug kann auch ein kleiner Performancevorteil erworben werden, denn der Compiler hat intern mehr Möglichkeiten zur Optimierung.

1