Codegym University コースの一部としてのメンターによる講義の抜粋。フルコースにお申し込みください。


「またかよ、アミーゴ。まあ、こんにちは。」

「私に会えてあまり嬉しくないようですね、ディエゴ?」

「Java のメソッドについて知っておくべきことはすべてすでに学習したと考えているような印象を受けました。」

「ああ、そうではない…」

「そんなことはないと思いますよ!あなたは半分もわかっていませんよ。」

「確かに、異論はありませんが…

「わかりました。話はもう十分です。始める時間です。そして、簡単なことから始めましょう。たとえば、Java には return ステートメントがあるという事実です。これを使用すると、呼び出されたメソッドを即座に終了できますステートメントは次のとおりです。

return;

「それは簡単です。単独の単語returnの後にセミコロンが続きます。プログラムがこのステートメントを実行するとすぐに、現在のメソッドが終了し、呼び出し元のメソッドが続行されます。

「メソッドreturn内で が呼び出された場合mainmainメソッドは直ちに終了し、それとともにプログラム全体も終了します。

例:

class Solution
{
   public static void fill(int[] data, int from, int to, int value)
   {
     if (from < 0 || to > data.length)
       return;

     for (int i = from; i < to; i++)
     {
       data[i] = value;
     }
   }

   public static void main(String[] args)
   {
     int[] months = {1, 2, 3, 4, 5, 6, 7, 8 ,9, 10, 11, 12};
     fill(months, 2, 10, 8);
   }
}
このfill メソッドは、渡された配列の一部を で埋めますvalue

配列の埋められる部分は、インデックスfrom とによって定義されますto

が  配列の長さよりfrom 小さい場合0、または配列の長さより大きい場合、メソッドはただちに終了します。to

「上記のプログラムにはfill、渡された配列を で埋めるメソッドがありますvalue。これは配列全体を埋めるのではなく、インデックスfromとで指定された部分のみを埋めますto

「メソッドの開始時にfill、渡された値が有効であるかどうかがチェックされます。 がfrom0 より小さい場合、または がto配列の長さより大きい場合、fillメソッドは直ちに終了します (returnステートメントが実行されます)。」

「分かりました。この文で意味することはそれだけですか?」

「実際、このreturnステートメントはあなたが思っているよりも便利です。このステートメントは Java のほぼすべてのメソッドに含まれるほど便利です。そしてこれから、なぜそうなるのかを理解していきたいと思います。

結果のあるメソッド、void

「ステートメントと式があることを覚えているでしょう。それらの違いは何ですか?」

「私の記憶が間違っていなければ、表現は発言と違って、どこかで使える意味を持っています。」

「そうです。そして、Java では、メソッドは値を持つこともできます。これは非常に良いニュースです。メソッドは、入力パラメータに基づいて何かを実行できるだけでなく、たとえば、何かを評価して結果を返すこともできます。」計算

「ところで、あなたはすでにそのような方法に遭遇しています:

double delta = Math.abs(d1 - d2);
メソッドabs()は double を返します
Scanner console = new Scanner(System.in);
int x = console.nextInt();

メソッドnextInt()は、int
String str = "Hello";
String s2 = str.toUpperCase();
メソッドtoUpperCase()は、String
int[] data = {1, 4, 5, 6, 7, 8, 11};
int[] array = Arrays.copyOf(data, 4);

メソッドcopyOf()は、int[]

「各メソッドは、あらかじめ決められた 1 つの型の 1 つの値のみを返すことができます。戻り値の型は、メソッドが宣言されたときに決定されます。

public static Type name(parameters)
{
  method body
}

ここでname、 はメソッドの名前、parametersはメソッドパラメータのリスト、 はtypeメソッドが返す結果の型です。

何も返さないメソッドの場合は、特別なプレースホルダー タイプがあります: void

「言い換えれば、メソッドを作成して何も返したくない場合は、メソッドの型を と宣言しますvoid。それだけですか?」

「はい。そして、Java にはそのようなメソッドがかなりたくさんあるとも言わなければなりません。

結果を返す

「計算/作業の結果を返すメソッドを宣言する方法はわかりました。メソッド自体から結果を返すにはどうすればよいですか?」

「それは正しい質問です。returnここでもこのステートメントが役に立ちます。メソッドから結果を渡すのは次のようになります。

return value;

returnステートメントはメソッドを直ちに終了します。そして、valueメソッドが終了するときにメソッドが呼び出し元のメソッドに返すべきものです。 の型は、メソッド宣言で指定されたvalueものと一致する必要がありますType。これまでに学んだことを強化するために、いくつかの例を次に示します。

例 1. このメソッドは 2 つの数値の最小値を計算します。

int min(int a, int b)
{
   if (a < b)
     return a;
   else
     return b;
}
このメソッドは 2 つの数値の最小値を返します。 戻る

場合は戻る、 そうでない場合は 戻るa < b
a

b

例 2. メソッドは、渡された文字列をn何度も複製します。

String multiple(String str, int times)
{
   String result = "";

   for (int i = 0; i < times; i++);
     result = result + " "+ str;
   return result;
}
このメソッドは、文字列とその文字列を繰り返す回数という 2 つのパラメータを受け取ります。
将来の結果のために空の文字列が作成されます。

反復を伴うループではtimes、スペースと文字列strが string に追加されますresult
文字列はresultメソッドの結果として返されます。

例 3: このメソッドは、三項演算子を使用して 2 つの数値の最大値を計算します。

int max(int a, int b)
{
   return (a > b ? a : b);
}
このメソッドは最大 2 つの数値を返します。

return (if a > b、 then a、それ以外の場合b)

「素晴らしい。メソッドは私の新しいスーパーパワーだ!」

「実践的なタスクで十分な練習をした場合に限ります。何度も繰り返します。」