CodeGym /Kurse /Java Syntax /Methoden aufrufen, Werte zurückgeben

Methoden aufrufen, Werte zurückgeben

Java Syntax
Level 2 , Lektion 7
Verfügbar

„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 MethodCall
{
    public static void main(String[] args)
    {
         print4("I like to move it, move it.");
    }

    public static void print4(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 print4 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 MethodCall
{
   public static void main(String[] args)
   {
      int a = 5, b = 7;
      int m = min(a, b);
      System.out.println("The minimum is "+ 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 MethodCall
{
   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("The minimum is "+ m);
   }
}

„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.“

Kommentare (13)
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION
Akanah Keto Level 5, Germany, Germany
3 April 2025
Ich habe alles genau so abgeschrieben, aber es wurde nicht übernommen. Nimmt das Programm irgendwelche Zeilenumbrüche zu genau ?
Krysal Level 8, Germany, Germany Expert
21 September 2023
Weil in den Kommentaren immer mal wieder moniert wird, dass bestimmt Sachverhalte nicht gleich erklärt werden und es erst ein paar mal Kapitel später kommt und die Erklärung vorher schon schön gewesen wäre: Die Idee dahinter ist gar nicht so doof. In den Übungen wird da ja auch generell nichts verlangt und ist dann vorgegeben, wenn es noch nicht erklärt wurde. Aber bis es dann erklärt wird, hat man es dann schon ein paar mal gesehen und ist nicht gänzlich neu. Auch hat man diesen Effekt: Ah das hatten wir doch schon benutzt. Ich vermute, dass steigert wirklich den Lerneffekt und vor allem das Verständnis. Ich als Autofahrer weiß ja auch nicht genau, wie alles funktioniert und kann mein Auto trotzdem bedienen. Wenn ich aber nun Ambitionen habe ein Auto selbst zusammen zuschreiben, dann weiß ich wenigsten schon mal wozu ich eine Bremse, Kupplung und Gangschaltung braucht. ich habe es schon mal gehört und bedient und kann eher verstehen, wie die Dinge funktionieren. So mein Wort zum Donnerstag :)
Furô Level 9, Germany
18 Januar 2023
Fehlt bei der if-Schleife nicht jeweils die { } Klammern?
Anonymous #11271621 Level 14, Ann Arbor, Germany
13 Februar 2023
Wenn du nur eine eine Zeile als Schleifenrumpf schreibst, kannst du die Klammern weglassen. Würd ich Anfängern aber nicht empfehlen und ist auch eher unschön.
Akanah Keto Level 5, Germany, Germany
3 April 2025
Ich finde es generell nicht gut wenn Klammern weggelassen werden, weil man meistens nicht gleich sehen kann ob ein Code sich innerhalb oder außerhalb einer Methode befindet. Ist vor allem störend wenn man sich fremden Code ansehen und den gegebenfalls ändern oder erweitern muss als ein Entwicklicker in einem Team.
Gudrun Level 10, Eberbach, Germany Expert
27 Juni 2020
Ah so, vielen Dank für die Erklärung.
Gudrun Level 10, Eberbach, Germany Expert
12 Mai 2020
Im linken Beispiel oben sind die Variablen a und b definiert und unten wird mit den Variablen c und d die Variable m2 ermittelt. Ich vermisse aber einen Zusammenhang zwischen a/b und c/d, wie kann m2 ohne a und b ermittelt werden? Verstehe ich nicht....
Daniel Staudacher Level 4, Mittel Horka, Germany
20 Juni 2020
c/d sind nur "platzhalter" die aufzeigen welchen Variablen-Typ die Funktion erwartet. Durch int m = min(a, b); werden die Werte von a/b an die Funktion min() gereicht, die diese Werte dann für c/d einfügt und die kleinere Zahl berechnet
Chris Cross Level 2, Imst, Austria
8 April 2020
Da muss man genau achten wo die Java Maschine hinspringt.🧐
irgendwie Level 4
2 März 2020
in zeile 6 steht : int m = min(a, b); innerhalb der funktion min() wird m2 ausgerechnet und mit return wiedergegeben return m2 ist demnach die selbe zahl wie min(a,b);
Hannes Hinze Level 2, Dortmund, Germany
19 Februar 2020
Woher weis denn die Funktion im linken Beispiel das m=m2, es wurde doch nicht deklariert?
Emmi Level 4, Dresden, Germany
17 Mai 2020
In zeile 6 wird die ausgabe der min funktion (das ist m2) mit m verknüpft.
Anonymous #11051542 Level 5, Köln, Germany
12 August 2022
genau in zeile 6 wird quasi gesagt das variable m mit dem wert gefüllt werden soll, der bei der methode min rauskommt wenn c den wert von a und d den wert von b hat :)