Einführung in Werte von Methodenaufrufen im Rahmen der Lehre der Programmiersprache Java. (Java Aufruf Java Aufrufe Java Methodenaufruf Java Methodenaufrufe, java.lang.Math.random), Lektion, Seite 721317
http://www.purl.org/stefan_ram/pub/java_aufrufwert_de ist die kanonische URI dieser Seite.
Stefan-Ram-Startseite

Aufrufwerte in Java

Aufrufsyntax

Es folgt eine vereinfachte Variante der Aufrufsyntax  von Java  (“method invocation ” bedeutet „Methodenaufruf“).

MethodInvocation 〉 ::=
MethodName 〉 "(" ")".

Diese Syntax gibt im wesentlichen an, daß ein Methodenaufruf aus einem Methodennamen gebildet werden kann, auf den eine öffnende und eine schließende runde Klammer folgt.

In Java  ist ein Methodenname  aufrufbar. Obwohl ein Methodenname in Java  kein Ausdruck ist, der die benannte Methode als Wert hat, sagt man doch oft, daß man eine Methode  aufrufe (und nicht etwa den Namen  der Methode). Ein Methodenaufruf kann aus einem Methodennamen und einem paar runder Klammern bestehen. Ein Beispiel für einen Methodenaufruf wird nun anhand der Methode "java.lang.Math.random" vorgestellt.

java.lang.Math.random()

In dem als Beispiel gewählten Methodenaufruf "java.lang.Math.random()" ist der Quelltext "java.lang.Math.random" also ein MethodName . (Der MethodName  hat in diesem Fall die Struktur TypeName 〉 "." 〈Identifier , wobei der Quelltext "java.lang.Math" der TypeName  ist und der Quelltext "random" der Identifier  ist.)

Der Methodenaufruf "java.lang.Math.random()" hat einen Wert vom Datentyp "double". Dieser Wert ist eine im Rahmen des Aufrufs ermittelte Pseudozufallszahl ist. Das wird auch in dem folgenden Kompaßdiagramm dargestellt.

java.lang.Math.random [Kompassdiagramm]
.-----------------------. 
| java.lang.Math.random | double 
| |------------------->  
| | Pseudozufallszahl 
'-----------------------'

In dem folgenden Beispiel wird die Methode "java.lang.Math.random" aufgerufen. Der Quelltext "java.lang.Math.random" ist ein Methodenname. Der Wert dieses Aufrufs ist eine Pseudozufallszahl, die größergleich 0.0 und kleiner als 1.0 ist.

Pseudozufall.java
public class Pseudozufall 
{ public static void main( String[] args ) 
{ System.out.println( java.lang.Math.random() ); }}

System.out
0.3977174048298153

Man spricht beim Aufruf der Methode "java.lang.Math.random()" auch davon, daß man der Klasse ""java.lang.Math" die Nachricht "random()" schicke und sieht dabei eine Klasse als eine Entität an, mit der eine Kommunikation durch Nachrichten erfolgt. Obwohl das eine etwas irritierende Vorstellung ist, kann mit „Versand einer Nachricht“ eine Kommunikation in beide  Richtungen gemeint sein, weil man dazu auch die „Antwort“ auf die Nachricht zählt, also beispielsweise die sich durch den Aufruf ergebende Pseudozufallszahl.

[UML collaboration diagram]

| | 
| | random() 
| | 
| V 

.--------------------------------------. 
| | 
| java.lang.Math | 
| -------------- | 
| | 
'--------------------------------------'

Wenn der Aufrufoperator weggelassen wird, dann handelt es sich nicht mehr um einen korrekten Aufruf.

Pseudozufall1.java
public class Pseudozufall1 
{ public static void main( String[] args ) 
{ System.out.println( java.lang.Math.random ); }}

Konsole
Pseudozufall.java:3: cannot resolve symbol 
symbol : variable random 
location: class java.lang.Math 
{ System.out.println( java.lang.Math.random ); }} 
^
1 error

Namen von Methoden gelten in Java  nicht als Ausdrücke, was man daran erkennen kann, daß man sie in einem Aufruf auch nicht einklammern kann. (In einigen anderen Sprachen ist das möglich, weil dort die Namen selber Ausdrücke darstellen und ein Ausdruck kann immer eingeklammert werden, ohne daß sich dadurch etwas ändert.) In dem folgenden Beispiel wird der Aufrufoperator wieder verwendet, doch der Name der aufgerufenen Methode wurde eingeklammert.

Pseudozufall2.java
public class Pseudozufall2 
{ public static void main( String[] args ) 
{ System.out.println(( java.lang.Math.random )() ); }}

Konsole
Pseudozufall.java:3: illegal start of expression 
{ System.out.println(( java.lang.Math.random )() ); }} 
^
Pseudozufall.java:3: ')' expected 
{ System.out.println(( java.lang.Math.random )() ); }} 
^
Pseudozufall.java:3: cannot resolve symbol 
symbol : class random 
location: class java.lang.Math 
{ System.out.println(( java.lang.Math.random )() ); }} 
^
3 errors

Von der Stefan-Ram-Startseite ausgehend finden sich oft noch mehr Informationen zu Themen, die auf einer Seite angesprochen wurden. (Eine Verbindung zur Stefan-Ram-Startseite befindet sich ganz oben auf dieser Seite.)  |   Seiteninformation und Impressum  |   Formular für diese Seite betreffende Mitteilungen an den Herausgeber  |   Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram. slrprd, PbclevtugFgrsnaEnz