„Okay, versuchen wir es mal anders. Ich zeige dir, wie das Aufrufen von Methoden funktioniert, und dann versuchst du, die vorherige Lektion noch einmal durchzugehen, okay?“

„Los geht‘s.“

„Prima. Ich werde dir etwas über den Aufruf von Funktionen/Methoden und die Werte, die sie zurückgeben (Rückgabewerte), erzählen.“

„Befehle oder Ausdrücke werden in Methoden gruppiert, so dass sie als ein einzelner Block ausgeführt werden können, wie ein einzelner komplexer Befehl. Um dies zu tun, musst du den Namen der Methode (Funktion) schreiben und dann die Argumente der Methode in Klammern auflisten.“

Beispiel
package com.codegym.lesson2;
public class Methodenaufruf
{
    public static void main(String[] args)
    {
         ausdrucken4("I like to move it, move it.");
    }

    public static void ausdrucken4(String s)
    {
        System.out.println(s);
        System.out.println(s);
        System.out.println(s);
        System.out.println(s);
    }
}

„Im Beispiel oben haben wir eine Funktion geschrieben, die die übergebene Zeichenkette viermal auf dem Bildschirm anzeigt. Dann haben wir die Funktion ausdrucken4 in Zeile 6 aufgerufen.“

„Wenn das Programm Zeile 6 erreicht, springt es zu Zeile 9 und weist den Wert ‚I like to move it, move it‘ der Variable s zu.“

„Dann werden die Zeilen 11-14 ausgeführt. Die Funktion wird beendet und das Programm wird in Zeile 7 fortgesetzt.“

„Ach so.“

„Du kannst nicht nur Parameter (Werte) an eine Funktion übergeben – eine Funktion kann das Ergebnis ihrer Arbeit zurückgeben (Rückgabewert). Dies geschieht mit dem Schlüsselwort return. Das sieht dann so aus:“

Beispiel 1.
Ermittle die kleinere von zwei Zahlen.
public class Methodenaufruf
{
   public static void main(String[] args)
   {
      int a = 5, b = 7;
      int m = min(a, b);
      System.out.println("Die kleinste Zahl ist "+ m);
   }

   public static int min(int c, int d)
   {
      int m2;
      if (c < d)
           m2 = c;
      else
           m2 = d;

      return m2;
   }
}
So funktioniert es:
public class Methodenaufruf
{
   public static void main(String[] args)
   {
      int a = 5, b = 7;
      int c = a, d = b;
      int m2;
      if (c < d)
           m2 = c;
      else
           m2 = d;

      int m = m2;
      System.out.println("Die kleinste Zahl ist "+ m);
   }
}
undefined
1
Aufgabe
Java Syntax, Level 2, Lektion 7
Gesperrt
Code-Eingabe
Manchmal darf man gar nicht nachdenken, man muss es einfach raushauen! Auch wenn es sich paradox anhört, manchmal „erinnern“ sich deine Finger besser als dein bewusster Verstand. Deshalb wirst du es im Rahmen der Schulung im geheimen CodeGym-Zentrum manchmal mit Aufgaben zu tun bekommen, bei denen du Code eingeben musst. Wenn du Code eingibst, gewöhnst du dich an die Syntax und sammelst ein wenig dunkle Materie. Außerdem tust du etwas gegen deine Faulheit!

„Ich glaube, langsam komme ich dahinter! Der Code in der linken und rechten Spalte ist im Grunde derselbe. Der Code auf der linken Seite hat lediglich eine eigenständige Funktion.“

„Die Funktion berechnet einen bestimmten Wert und gibt diesen Wert mit der return-Anweisung zurück. Zumindest sehe ich das so.“

„Du hast völlig Recht!“

„Aber was ist dieser void-Typ?“

„Einige Funktionen machen einfach etwas, ohne einen Wert zu berechnen oder zurückzugeben, wie unsere Methode main(). Für solche Funktionen wurde ein spezieller Rückgabetyp geschaffen: void.“

„Warum kann man nicht einfach nichts deklarieren, wenn eine Funktion nichts zurückgibt?“

„Weißt du noch, wie wir eine Variable deklarieren? Typ und Name. Für Funktionen deklarieren wir einen Typ, einen Namen und Klammern. Mit dem Funktionsnamen gefolgt von Klammern rufst du Funktionen auf.“

„Also war es einfacher, den Typ ‚void‘ zu erfinden, als Funktionen in zwei Kategorien einzuteilen – diejenigen, die Werte zurückgeben und diejenigen, die dies nicht tun?“

„So ist es! Du bist wirklich klug, mein Junge.“

„Wie geben wir einen void-Typ zurück?“

„Das tun wir nicht. Es funktioniert folgendermaßen. Bei der Ausführung der return-Anweisung berechnet die Java-Maschine den Wert des Ausdrucks rechts neben dem Wort ‚return‘, speichert diesen Wert in einem speziellen Speicherbereich und beendet sofort die Funktion. Der gespeicherte Wert wird dort verwendet, wo die Funktion aufgerufen wurde, als Ergebnis des Funktionsaufrufs. Du kannst es in dem Beispiel sehen, das ich dir vorhin gegeben habe.“

„Du meinst den Teil, bei dem int m = min(a, b) in m = m2 umgewandelt wird?“

„Ja. Nach Abschluss der Funktion funktioniert alles so, als ob der Rückgabewert der Funktion an ihrer Stelle geschrieben wurde. Wiederhole diesen Satz in deinem Kopf und schau dir den Code im letzten Beispiel an.

„Ich glaube, das sieht nur einfach aus. Das ist eigentlich ziemlich schwierig. Ich habe es nur teilweise verstanden.“

„Das ist in Ordnung. Beim ersten Versuch kannst du nur die Dinge verstehen, die du bereits kennst. Je mehr Dinge du nicht verstehst, desto tiefer stürzt du dich in etwas Neues, und desto besser werden deine Ergebnisse sein. Mit der Zeit wird alles klarer.“

„Naja, wenn du es sagst. Weiter geht‘s.“