「わかりました。別のアプローチを試してみましょう。メソッドの呼び出しがどのように機能するかを説明します。それから、前のレッスンをもう一度やってみてください。いいですか?」

"やってみましょう。"

「わかりました。関数/メソッドの呼び出しと、それらが返す値 (戻り値) について説明します。」

「コマンドまたはステートメントはメソッドにグループ化されているため、単一の複雑なコマンドのように、単一のブロックとして実行できます。これを行うには、メソッド (関数) 名を記述し、括弧内にメソッドの引数をリストする必要があります。」

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);
    }
}

「上の例では、渡された文字列を画面に 4 回表示する関数を作成しました。その後、print46 行目で関数を呼び出しました。」

'I like to move it, move it'「プログラムが 6 行目に到達すると、9 行目にジャンプし、変数 s に値を代入します。」

「その後、11 ~ 14 行目が実行されます。関数は終了し、プログラムは 7 行目から再開されます。」

"そうか。"

「関数に引数 (値) を渡すだけでなく、関数はその作業の結果 (戻り値) を返すこともできます。これはキーワード return で行われます。これは次のようになります。」

例 1.
2 つの数値の最小値を決定します。
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;
   }
}
仕組みは次のとおりです。
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);
   }
}

「意味が分かり始めたと思います! 左列と右列のコードは実際には同じです。単に、左側のコードにスタンドアロン関数があるだけです。」

「関数は特定の値を計算し、return ステートメントを使用してその値を呼び出したものに渡します。少なくとも、私はそう考えています。」

「そして、あなたは正しいです!」

「しかし、この void 型は何ですか?」

「 main()メソッドのように、値を計算したり返さずに何かを実行するだけの関数もあります。そのような関数のために特別な戻り値の型 ( void)が作成されました。」

「関数が何も返さない場合は、何も宣言しないのはなぜでしょうか?」

「変数の宣言方法を覚えていますか? 型と名前です。関数の場合は、型、名前、かっこを宣言します。関数名の後にかっこを付けると、関数を呼び出すことができます。」

「では、関数を 2 つのカテゴリ (値を返すものと値を返さないもの) に分けるよりも、『void 型』を発明する方が簡単だったということでしょうか?」

「その通りです!あなたは本当に賢いのです、坊や。」

「void 型を返すにはどうすればよいでしょうか?」

「そうではありません。このように動作します。return ステートメントを実行すると、Java マシンは単語「return」の右側にある式の値を計算し、この値をメモリの特別な部分に保存し、すぐに終了します。関数保存された値は、関数を呼び出した結果として、関数が呼び出された場所で使用されます。前に示した例でそれを見ることができます。」

「int m = min(a, b) を m = m2 に変換する部分のことですか?」

「はい。関数が終了すると、関数の戻り値がその場所に書き込まれたかのようにすべてが動作します。このフレーズを心の中で繰り返し、最後の例のコードを見てください。

「これは簡単なように見えるだけだと思います。実際は難しいです。私はそれの一部しか理解していません。」

「大丈夫です。最初は、すでに知っていることしか理解できません。理解できないことが増えれば増えるほど、新しいことに深く入り込み、より良い結果が得られます。時間が経てば、それはより明確になります」 。」

「まあ、そう言うなら続けましょう」