Syntax und Semantik von Konstantendeklarationen in Java (Syntax und Semantik von Konstantendeklarationen in Java), Lektion, Seite 723224
https://www.purl.org/stefan_ram/pub/konstantendeklarationssyntax_java (Permalink) ist die kanonische URI dieser Seite.
Stefan Ram
Java-Kurs

Syntax von final-Variablendeklarationsanweisungen in Java 

Eine final-Variable kann man in diesem Teil des Kurses als einen Wertnamen ansehen, also als einen Namen, der einen Typ hat und für einen Wert steht.

Eine final-Variable ist eine Variable, so daß wir sie manchmal auch einfach als eine Variable  bezeichnen, insbesondere in Aussagen, die auch für andere Arten von Variablen gelten, die später vorgestellt werden werden.

Die Festlegung der Eigenschaften einer Variablen nennt man auch „Deklaration einer Variablen“. Dabei bedeutet der Begriff Deklaration  „Festlegung“.

Die Deklaration einer final-Variablen erfolgt mit einer final-Variablendeklarationsanweisung, für den wir schon Beispiele gesehen haben.

Eine final-Variablendeklarationsanweisung (Beispiel)
final int zwoelf = 12;

Eine final-Variablendeklarationsanweisung wird manchmal auch nur kurz als eine final-Variablendeklaration  bezeichnet, auch wenn dies nicht immer ganz korrekt ist, weil eine final-Variablendeklaration eigentlich nur der Teil einer final-Variablendeklarationsanweisung ist, der sich vor dem Semikolon befindet.

Unter einem Wertausdruck  verstehen wir einen Ausdruck, der einen Wert hat. Es soll sich dabei also nicht um den Aufruf einer void-Methode handeln.

Eine Deklarationsanweisung zu einer final-Variablen besteht (vorläufig) aus dem Wort »final«, der Angabe des Typs der final-Variablen (wie beispielsweise ›java.lang.String‹, ›int‹, ›long‹ oder ›double‹), einem Bezeichner als Namen der final-Variablen, gefolgt von einem Gleichheitszeichen »=«, einem Wertausdruck (wie beispielsweise »12«) und einem Semikolon »;«.

Der Name einer Variablen muß als ein Bezeichner  deklariert werden. Im Gegensatz zu einem allgemeinen Namen darf ein Bezeichner keine Punkte  ».« enthalten.

Eine final-Variablendeklarationsanweisung darf in einem Block überall dort verwendet werden, wo auch eine Anweisung stehen dürfte.

final-Variablendeklarationsanweisung (Beispiele)
final int              a    = 2;
final double x = 2.724;
final java.lang.String text = "abc";
final-Variablendeklarationsanweisung (Syntaxdiagramm)
final-Variablendeklarationsanweisung
.----------------------------. .-.
--->| final-Variablendeklaration |--->( ; )--->
'----------------------------' '-'
final-Variablendeklaration (vereinfachtes Syntaxdiagramm)

final-Variablendeklaration
.-----. .-----. .-------------. .-. .------------.
--->( final )---.--->| Typ |---.--->| Bezeichner |--->( = )--->| Ausdruck |--->
'-----' | '-----' | '-------------' '-' '------------'
| .---. | Variablenname Wertausdruck
'--->( var )---'
'---'

Typ
.---.
---.---->( int )---->.--->
| '---' ^
| .------. |
'--->( long )---'
| '------' |
| .------. |
'--->( double )---'
| '------' |
| .------. |
'---->| Name |----'
'------'

Name
.-----------------------.
| .------. .-. v .------------.
---'--->| Name |-->( . )---'--->| Bezeichner |--->
'------' '-' '------------'

Das Wort »final« ist hier ein Variablenmodifizierer.

Das Nichtterminalsymbol »Name« in der Produktionsregel »Typ« kann beispielsweise für »java.lang.String« stehen.

Block (Syntaxdiagramm)

Block

.-. .-.
--->( { )----.----------------------.---->( } )---->
'-' | | '-'
| .-----------. |
'----| Anweisung |<----'
'-----------'

Anweisung
Anweisung
.--------------------------------------.
---.--->| Ausgabeanweisung |----.--->
| '--------------------------------------' |
| .--------------------------------------. |
'--->| Aufrufanweisung |----'
| '--------------------------------------' |
| .--------------------------------------. |
'--->| Block |----'
| '--------------------------------------' |
| .--------------------------------------. |
'--->| final-Variablendeklarationsanweisung |----'
'--------------------------------------'

Der Initialisierungsausdruck

Der rechts vom Gleichheitszeichen stehende Wertausdruck wird als Initialisierungsausdruck  bezeichnet.

(Der Initialisierungsausdruck  wird verwendet, um den Anfangswert  der Variablen festzulegen. Das Wort „Initialisierung“ stammt von lateinisch "initialis " „anfänglich“ ab, einer Bildung zu "initium " „Anfang“.)

final-Variablendeklaration (vereinfachtes Syntaxdiagramm)
final-Variablendeklaration
.-----. .-----. .------------. .-. .------------------------.
--->( final )---.--->| Typ |---.--->| Bezeichner |--->( = )--->| Ausdruck |--->
'-----' | '-----' | '------------' '-' '------------------------'
| .---. | Initialisierungsausdruck
'--->( var )---'
'---'

ℛ Definition „Initialisierungsausdruck“ Der Initialisierungsausdruck  einer Variablendeklaration ist der Ausdruck direkt hinter dem Gleichheitszeichen »=«.

Als Initialisierungsausdruck ist ein beliebiger Ausdruck gestattet (es muß kein Literal sein).

Ein Initialisierungsausdruck kann auch eine Verwendung einer final-Variablen, ein Operatorausdruck oder ein Aufruf sein.

Main.java
public final class Main
{ public static void main( final java.lang.String[] args )
{ final int a = 1;
final int x = a; /* Verwendung */
final int y = a + 1; /* Operatorausdruck */
final int z = java.lang.Math.abs( a ); /* Aufruf */
java.lang.System.out.println( a );
java.lang.System.out.println( x );
java.lang.System.out.println( y );
java.lang.System.out.println( z ); }}
transcript
1
1
2
1

Wir kennen nun folgende Verwendungsmöglichkeiten von Ausdrücken: Ausdrücke können verwendet werden als

Syntax einer Variablenverwendung

Für die Verwendung einer Variablen als Ausdruck müssen wir keine neue Syntaxregel angeben, da wir schon früher behandelt haben, daß Namen, wie »java.lang.Math.PI«, als Ausdrücke verwendet werden können.

Syntaxdiagramm
Ausdruck
.-------.
--->| Name |--->
'-------'

Übungsfragen ⃗

?   Übungsfrage ⃗

Was ist der Initialisierungsausdruck in dem folgenden Programm?

Main.java
public final class Main
{ public static void main( final java.lang.String[] args )
{ final int c = 2 + 1;
java.lang.System.out.println( c ); }}
Protokoll
3

Übungsaufgaben

/   Inkarnieren von Syntaxdiagrammen ⃗

Schreiben Sie eine Inkarnation der Kategorie »final-Variablendeklaration« des folgenden Syntaxdiagramms mit dem Typ ›int‹, dem Bezeichner »e« und dem Wertausdruck »8/2«.

final-Variablendeklaration [vereinfachtes Syntaxdiagramm]

final-Variablendeklaration
.-----. .-----. .------------. .-. .------------------------.
--->( final )---.--->| Typ |---.--->| Bezeichner |--->( = )--->| Ausdruck |--->
'-----' | '-----' | '------------' '-' '------------------------'
| .---. | Variablenname Initialisierungsausdruck
'--->( var )---'
'---'

Typ
.---.
---.---->( int )---->.--->
| '---' ^
| .------. |
'--->( long )---'
| '------' |
| .------. |
'--->( double )---'
| '------' |
| .------. |
'---->| Name |----'
'------'

„Deklaration“ oder „Definition“? *

Die final-Variablendeklarationen werden nach der Java -Sprachspezifikation „Variablendeklarationen “ genannt, nicht „Variablendefinitionen “. Jedoch sprechen viele Programmierer und selbst das JDK  (“i is already defined ”) auch manchmal von einer Definition einer Variablen  oder von einer Variablendefinition. Daher sollte man die Bezeichnung „Definition“ auch als zulässig ansehen. Sie hat in Java  die gleiche Bedeutung.

Syntax einer Variablenverwendung *

Für die Verwendung einer final-Variablen als Ausdruck müssen wir keine neue Syntaxregel angeben, da wir schon früher behandelt haben, daß Namen, wie »java.lang.Math.PI«, als Ausdrücke verwendet werden können.

Syntaxdiagramm
Ausdruck
.-------.
--->| Name |--->
'-------'

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 stefanram723224 stefan_ram:723224 Syntax und Semantik von Konstantendeklarationen in Java Stefan Ram, Berlin, and, or, near, uni, online, slrprd, slrprdqxx, slrprddoc, slrprd723224, slrprddef723224, 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/konstantendeklarationssyntax_java