Javaにおける「値を返す関数」または「戻り値を持つメソッド」について、完全かつ包括的な記事を以下に提供します。
Javaにおける「値を返す関数」の基礎
Javaでは、メソッドは「値を返す」ことができます。この「値を返す」という概念は、関数型プログラミングや数学的な関数に似ており、何らかの計算結果を呼び出し元に返すことを意味します。Javaでこのメソッドを定義する際には、メソッドの宣言で戻り値の型を指定し、メソッド内でその型のデータをreturn
キーワードを使って返します。

戻り値の型
戻り値の型は、メソッドが返す値のデータ型を表します。例えば、整数を返すメソッドはint
型を使用し、文字列を返すメソッドはString
型を使用します。戻り値の型には基本データ型(int
, double
, char
など)や参照型(String
, Object
など)が使用されます。
戻り値を返すメソッドの構文
メソッドの構文は以下のようになります:
java戻り値の型 メソッド名(引数リスト) {
// メソッドの処理
return 戻り値;
}
たとえば、2つの整数の合計を返すメソッドは次のように書けます:
javapublic int add(int a, int b) {
return a + b;
}
ここでは、int
型を戻り値として指定し、a + b
の結果を返しています。
return
キーワード
return
はメソッド内で結果を呼び出し元に返すために使用されるキーワードです。return
はメソッド内の処理を終了させ、その値をメソッドの呼び出し元に渡します。戻り値の型と一致する値をreturn
で返す必要があります。
例えば、以下のメソッドではdouble
型の結果を返します:
javapublic double calculateArea(double radius) {
return Math.PI * radius * radius;
}
この場合、円の面積を計算してその結果をdouble
型で返しています。
戻り値のないメソッド(void型)との違い
Javaでは戻り値がないメソッドを定義することもできます。その場合、メソッドの戻り値の型にはvoid
を指定します。void
は「何も返さない」という意味です。
例えば、値を返さずに画面にメッセージを表示するメソッドは次のように書きます:
javapublic void printMessage(String message) {
System.out.println(message);
}
このメソッドはvoid
型であり、何も返さない代わりに引数として渡されたメッセージをコンソールに表示します。
メソッドの呼び出し元での戻り値の使用
メソッドが戻り値を返した場合、その戻り値は呼び出し元で利用することができます。呼び出し元で戻り値を受け取るためには、メソッドの呼び出しを変数に代入するか、戻り値を直接利用することができます。
例えば、先程のadd
メソッドを呼び出してその結果を変数に保存する場合、以下のように書けます:
javaint result = add(3, 5);
System.out.println("合計: " + result);
ここでは、add
メソッドの戻り値(8
)をresult
に代入し、それをコンソールに表示しています。
複数の戻り値を返す方法
Javaでは、基本的にメソッドは1つの戻り値しか返せません。しかし、複数の値を返す必要がある場合、以下の方法を使用することができます。
1. 配列やリストを返す
複数の値をまとめて返す方法の1つとして、配列やリストを使う方法があります。たとえば、2つの整数を返す場合、int[]
型の配列を返すことができます。
javapublic int[] getCoordinates() {
return new int[] { 10, 20 };
}
この方法では、呼び出し元で配列を受け取って、個々の値にアクセスできます。
javaint[] coordinates = getCoordinates();
System.out.println("X: " + coordinates[0] + ", Y: " + coordinates[1]);
2. オブジェクトを返す
もう1つの方法として、複数の値を格納できるオブジェクトを返す方法があります。自分でクラスを作成して、そのクラスのインスタンスを返すことができます。
javapublic class Result {
int x;
int y;
public Result(int x, int y) {
this.x = x;
this.y = y;
}
}
public Result getCoordinates() {
return new Result(10, 20);
}
この場合、Result
オブジェクトを返すことができ、そのインスタンスから個々のフィールドを参照することができます。
javaResult coordinates = getCoordinates();
System.out.println("X: " + coordinates.x + ", Y: " + coordinates.y);
return
を使ったエラーハンドリング
return
は、メソッドの終了を意味するだけでなく、エラーハンドリングにも使うことができます。例えば、引数が不正であった場合に早期にメソッドを終了させるためにreturn
を使用することがあります。
javapublic int divide(int a, int b) {
if (b == 0) {
System.out.println("エラー: 0で割ることはできません");
return -1; // エラーコードとして-1を返す
}
return a / b;
}
この例では、分母が0の場合にエラーメッセージを表示し、-1
を返してメソッドを終了します。
まとめ
Javaのメソッドにおける「値を返す」という概念は、非常に重要であり、プログラムの中でさまざまな場面で使用されます。戻り値を返すメソッドは、他のメソッドやコードと連携して動作し、プログラムの柔軟性や可読性を高めます。return
を適切に使用し、必要に応じて複数の値を返す方法を取り入れることで、より強力で汎用的なコードを作成することができます。