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
- Operanden,
- Argumente (in einem Aufruf oder einer Ausgabeanweisung), oder als
- Aufrufausdrücke in einer Aufrufanweisung, oder als
- Initialisierungsausdrücke (neu).
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 |--->
'-------'