Die Semantik von final-Variablendeklarationsanweisungen in Java (Die Semantik von final-Variablendeklarationsanweisungen in Java), Lektion, Seite 723823
https://www.purl.org/stefan_ram/pub/finalvariablensemantik_java (Permalink) ist die kanonische URI dieser Seite.
Stefan Ram
Java-Kurs

Die Bedeutung von final-Variablendeklarationsanweisungen in Java 

Bei der Ausführung einer final-Variablendeklarationsanweisung, die alle Anforderungen an eine solche Anweisung erfüllt, wird die darin enthaltene final-Variablendeklaration umgesetzt.

Die Umsetzung einer final-Variablendeklaration legt den Typ, den Namen  und den Wert  einer final-Variablen fest.

Danach kann der Name der final-Variablen als Wertausdruck mit dem festgelegten Typ und Wert verwendet werden. Der Name, der Typ und der Wert einer final-Variablen sind nicht veränderlich.

Die Festlegung des Wertes einer Variablen in einer Variablendeklaration wird auch als Initialisierung  (der Konstanten) bezeichnet. Unter Initialisierung  versteht man die erste Festlegung des Wertes eines Namens. Es handelt sich um eine Schreiboperation, bei welcher der Wert des Initialisierungsausdrucks in den Typ der Variablen gewandelt wird und dann in die Variable geschrieben  wird.

Die Verwendung eines Namens als Ausdruck nennt man kurz einfach nur Verwendung  (des Namens). Es handelt sich hierbei um eine Leseoperation, bei welcher der zuvor in die Variable geschriebene Wert wieder ausgelesen  wird.

Wirkungen der Auswertung des Initialisierungsausdrucks

Wenn ein Initialisierungsausdruck einer final-Variablendeklarationsanweisung eine Wirkung hat, so tritt diese bei der Auswertung auch ein. Im folgenden Programm wird die Eigenschaft »user.country« durch die final-Variablendeklarationsanweisung auf »IT« gesetzt.

Main.java

public final class Main
{ public static void main( final java.lang.String[] args )
{

final java.lang.String oldUserCountry =
java.lang.System.setProperty( "user.country", "IT" );

java.lang.System.out.println( java.lang.System.getProperty( "user.country" ));
java.lang.System.out.println( oldUserCountry );
java.lang.System.setProperty( "user.country", oldUserCountry ); }}

Protokoll
IT
DE

Man beachte, daß Variablen uns jetzt in die Lage versetzen, eine Änderung durch Zurückschreiben des ursprünglichen Wertes (in der letzten Zeile des obigen Programms) wieder rückgängig zu machen.

Kuriositäten *

In dem folgenden Programm wird eine Variable namens »String« deklariert.

An einer Stelle, an der in der Variablendeklaration ein Datentyp erwartet wird, steht der Name »String« dann nicht für diese Variable, sondern für den Datentyp »String«. Es handelt sich also um keine  Verwendung der Variablen »String«.

Main.java

public final class Main
{ public static void main( final java.lang.String[] args )
{

final int String = 1;
final String s = "1";
java.lang.System.out.println( s + String ); }}

Protokoll
11

In dem folgenden Programm wird an einer Stelle, an der eine Anweisung erwartet wird, der Name »System« als die zuvor deklarierte Variable interpretiert.

Main.java

public final class Main
{ public static void main( final java.lang.String[] args )
{

final int System = 1;
System.out.println( System ); }}

Protokoll
Main.java:6: error: int cannot be dereferenced
System.out.println( System ); }}
^
1 error

Genauso wird in dem folgenden Programm an einer Stelle, an der eine Anweisung erwartet wird, der Name »java« als die zuvor deklarierte Variable interpretiert.

Main.java

public final class Main
{ public static void main( final java.lang.String[] args )
{

final int java = 1;
java.lang.System.out.println( java ); }}

Protokoll
Main.java:6: error: int cannot be dereferenced
java.lang.System.out.println( java ); }}
^
1 error

Seiteninformationen und Impressum   |   Mitteilungsformular  |   "ram@zedat.fu-berlin.de" (ohne die Anführungszeichen) ist die Netzpostadresse von Stefan Ram.   |   Eine Verbindung zur Stefan-Ram-Startseite befindet sich oben auf dieser Seite hinter dem Text "Stefan Ram".)  |   Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram. Schlüsselwörter zu dieser Seite/relevant keywords describing this page: Stefan Ram Berlin slrprd slrprd stefanramberlin spellched stefanram723823 stefan_ram:723823 Die Semantik von final-Variablendeklarationsanweisungen in Java Stefan Ram, Berlin, and, or, near, uni, online, slrprd, slrprdqxx, slrprddoc, slrprd723823, slrprddef723823, PbclevtugFgrsnaEnz Erklärung, Beschreibung, Info, Information, Hinweis,

Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram.
https://www.purl.org/stefan_ram/pub/finalvariablensemantik_java