Die Zuweisung als Anweisungsausdruck in Java (Die Zuweisung als Anweisungsausdruck in Java), Lektion, Seite 723226
https://www.purl.org/stefan_ram/pub/zuweisung_anweisungsausdruck_java (Permalink) ist die kanonische URI dieser Seite.
Stefan Ram
Java-Kurs

Die Zuweisungsanweisung in Java 

Wir hatten schon früher erfahren, daß man Aufrufe vor ein Semikolon schreiben darf, um so eine Aufrufanweisung  zu schreiben. Ein Zuweisungsanweisung  wird auf ähnliche Weise geschrieben.

Einführendes Beispiel

In dem folgenden Beispiel weist die Zuweisungsanweisung »v = 2;« der Variablen »v« den Wert «2» zu.

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

Syntax

Eine Zuweisungsanweisung  besteht aus einem Zuweisungsausdruck und einem diesem folgenden Semikolon.

Zuweisungsanweisung (Syntaxdiagramm)

Anweisung
.-----------. .-.
--->| Zuweisung |--->( ; )--->
'-----------' '-'

Zuweisung
.------. .-. .----------.
--->| Name |--->( = )-->| Ausdruck |--->
'------' '-' '----------'

Wir können die Auflistung der uns bekannten Anweisungen nun um die Zuweisungsanweisung erweitern.

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

Ausführung

Bei der Zuweisungsanweisung wird der Wert  der Zuweisung nicht verwendet, die Wirkung  ihrer Auswertung tritt aber bei der Ausführung der Zuweisungsanweisung ein.

Das heißt, daß durch eine Zuweisungsanweisung der Wert des Ausdrucks rechts vom Gleichheitszeichen in die Variable links vom Gleichheitszeichen geschrieben wird. Als Anweisung hat die Zuweisungsanweisung aber keinen Wert.

Main.java
public final class Main
{ public static void main( final java.lang.String[] args )
{ int v = 7;
java.lang.System.out.println( v );
java.lang.System.out.println( v = 4 );
java.lang.System.out.println( v );
v = 3;
v = 2;
java.lang.System.out.println( v ); }}
transcript
7
4
4
2

Zuweisung ohne vorherige Deklaration

Eine Zuweisung an eine Variable ist ohne vorherige Deklaration  der Variablen nicht erlaubt.  Eine Zuweisung ist kein Ersatz für eine Deklaration.

Main.txt
public final class Main
{ public static void main( final java.lang.String[] args )
{ v = 7;
java.lang.System.out.println( v ); }}
Protokoll
error: cannot find symbol
{ v = 7;
^
symbol: variable v
location: class Main

Formulierungen in deutscher Sprache

Java 
int v = 7;
auf deutsch:
„Deklaration der int-Variablen »v« mit Initialisierung dieser Variablen mit dem Wert des Ausdrucks »7«“
Java 
java.lang.System.out.println( v );
auf deutsch:
„Ausgabe des Wertes der Variablen »v«“
Java 
v = 2;
auf deutsch:
„Zuweisung des Wertes des Ausdrucks »2« an die Variable »v«“
Java 
java.lang.System.out.println( v = 4 );
auf deutsch:
„Ausgabe des Wertes der Zuweisung von «4» an »v«“

Übungsfragen

?   Wirkung einer Zuweisung

Was gibt das folgende Programm aus?

Main.java
public final class Main
{ public static void main( final java.lang.String[] args )
{ int v = 2;
java.lang.System.out.println( v );
java.lang.System.out.println( v = 3 );
v = 4;
v = 7;
java.lang.System.out.println( v ); }}

?   Wirkung einer Zuweisung (1) →→

Was gibt das folgende Programm aus?

Main.java
public final class Main
{ public static void main( final java.lang.String[] args )
{ int v = 2;
java.lang.System.out.println( v );
v = 4;
java.lang.System.out.println( v ); }}

?   Wirkung einer Zuweisung (2) →→

Was gibt das folgende Programm aus?

Main.java
public final class Main
{ public static void main( final java.lang.String[] args )
{ int v = 2;
v = 4;
v = 7;
java.lang.System.out.println( v );
v = 9; }}

?   Wirkung einer Zuweisung (3) →→

Was gibt das folgende Programm aus?

Main.java
public final class Main
{ public static void main( final java.lang.String[] args )
{ int v = 2;
v = v * v;
java.lang.System.out.println( v = 0 ); }}

?   Wirkung einer Zuweisung (4) →→

Was gibt das folgende Programm aus?

Main.java
public final class Main
{ public static void main( final java.lang.String[] args )
{ int v = 2;
int w = 7;
v = w;
java.lang.System.out.println( v ); }}

?   Wirkung einer Zuweisung (5) →→

Was gibt das folgende Programm aus?

Main.java
public final class Main
{ public static void main( final java.lang.String[] args )
{ int v = 2;
int w = 7;
v = w + 2 * v + 1;
java.lang.System.out.println( v ); }}

?   Wirkung einer Zuweisung (6)

Was gibt das folgende Programm aus?

Main.java
public final class Main
{ public static void main( final java.lang.String[] args )
{ var v = java.lang.System.setProperty( "user.country", "IT" );
v = java.lang.System.setProperty( "user.country", "US" );
java.lang.System.out.println( java.lang.System.getProperty( "user.country" )); }}

Übungsaufgaben

/   Erhöhen

Schreiben Sie das folgende Programm so um, daß der Wert der Blockvariablen »i« durch eine Zuweisung um «7» erhöht wird (egal, welchen Wert die Variable »i« vorher hat).

Main.java

public final class Main
{ public static void main( final java.lang.String[] args )
{ int i = 4; /* oder irgendein anderer Wert */

/* ... */

java.lang.System.out.println( i ); }}

java.lang.System.out
4

Die Lösung soll den Wert auch dann um 7 erhöhen, wenn weiter oben das Numerale »4« durch ein anderes Numerale ersetzt werden würde, wie beispielsweise in dem folgenden Programm.

Main.java

public final class Main
{ public static void main( final java.lang.String[] args )
{ int i = 11; /* oder irgendein anderer Wert */

/* ... */

java.lang.System.out.println( i ); }}

java.lang.System.out
11

/   Erhöhen (1) →→

Schreiben Sie das folgende Programm so um, daß der Wert der Blockvariablen »v« durch eine Zuweisung um 7 Prozent erhöht wird.

Main.java

public final class Main
{ public static void main( final java.lang.String[] args )
{ double v = 4; /* oder irgendein anderer Wert */

/* ... */

java.lang.System.out.println( v ); }}

java.lang.System.out
4.0

Die Lösung soll den Wert auch dann um 7 Prozent erhöhen, wenn weiter oben das Numerale »4« durch ein anderes Numerale ersetzt werden würde, wie beispielsweise in dem folgenden Programm.

Main.java

public final class Main
{ public static void main( final java.lang.String[] args )
{ double v = 11; /* oder irgendein anderer Wert */

/* ... */

java.lang.System.out.println( v ); }}

java.lang.System.out
11.0

/   Vertauschen →

Schreiben Sie das folgende Programm so um, daß der Wert der Blockvariablen »x« an der Stelle des Kommentars mit dem Wert der Blockvariablen »y« vertauscht wird!

Main.java

public final class Main
{ public static void main( final java.lang.String[] args )
{ int x = 22; // oder irgendein anderer Wert
int y = 47; // oder irgendein anderer Wert

/* ... */

java.lang.System.out.println( x );
java.lang.System.out.println( y ); }}

java.lang.System.out
22
47

Wenn diese Aufgabe richtig bearbeitet wird, dann gibt das entstandene Programm also zuerst »47« und dann »22« aus.

Würde man allerdings anschließend das Numerale »22« und das Numerale »47« durch andere  Numeralia ersetzen, so sollten dann diese neuen  Werte vertauscht werden. Es sollen also die Werte der beiden Blockvariablen vertauscht werden, egal welche Werte dies nun sind. Deswegen darf die Lösung nicht nur für die hier als Beispiel festgelegten Werte das gewünschte Verhalten zeigen.

Anmerkung Diese Übungsaufgabe gehört zum roten Faden „Vertauschen“.

Hinweise zum Stil

Einige wichtige Stilregeln, die bei der Lösung dieser Aufgabe beachtet werden könnten, lauten:

Stilregel Der Name einer Variablen sollte ihre Bedeutung vermitteln.

Stilregel Der Gültigkeitsbereich eines Namens sollte so klein wie möglich sein.

(Quelle: Es gibt verschiedene Quellen zu dieser Regel, die für alle Programmiersprachen gilt. Beispielsweise das Kapitel “Minimize the scope ” im angesehenen Buch “Effective Java ” von Joshua Bloch.)

Stilregel Falls möglich, sollte »final« verwendet werden.

(Quelle: Es gibt verschiedene Quellen zu dieser Regel, die für alle Programmiersprachen gilt. Beispielsweise das Kapitel “Minimize mutability ” im angesehenen Buch “Effective Java ” von Joshua Bloch.)

Stilregel Ein Denkschritt kann als ein Block dargestellt werde, der mehrere zusammengehörige Schritte zu einer gedanklichen Einheit zusammenfaßt.

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 stefanram723226 stefan_ram:723226 Die Zuweisung als Anweisungsausdruck in Java Stefan Ram, Berlin, and, or, near, uni, online, slrprd, slrprdqxx, slrprddoc, slrprd723226, slrprddef723226, 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/zuweisung_anweisungsausdruck_java