Java の戻り値とは?メソッドから値を返す方法
新人
「Java でメソッドが値を返すことはできますか?」
先輩
「もちろんできるよ!メソッドが処理した結果を返す仕組みを『戻り値』というんだ。」
新人
「戻り値って何ですか?どうやって使うんですか?」
先輩
「それでは、Java の戻り値の基本から説明していくよ!」
1. Java の戻り値とは?(基本的な説明)
Java の「戻り値」とは、メソッドが処理を実行した後に、結果を呼び出し元へ返す仕組みのことです。
戻り値の基本的なイメージ
例えば、「2 つの数を足して合計を返すメソッド」を考えてみましょう。計算した結果を呼び出し元に返すことで、プログラム内で使うことができます。
戻り値を使った Java のメソッド
public class ReturnExample {
public static void main(String[] args) {
// メソッドを呼び出し、戻り値を受け取る
int sum = add(5, 3);
System.out.println("足し算の結果: " + sum);
}
// 戻り値のあるメソッド
public static int add(int a, int b) {
return a + b;
}
}
足し算の結果: 8
このように、メソッド add は計算した結果を return キーワードを使って返し、それを変数 sum に代入しています。
2. 戻り値を使うメリット
戻り値を使うことで、メソッドの結果を他の処理に活用できるようになります。
戻り値を使うと何が便利?
- ✔ 計算結果や処理結果を他の処理に活かせる
- ✔ メソッドを再利用しやすくなる
- ✔ プログラムの構造を整理しやすくなる
戻り値を使わない場合と比較
戻り値を使わずに、直接出力するメソッドを作ると、結果をプログラム内で活用できません。
public class NoReturnExample {
public static void main(String[] args) {
// 計算結果を使えない
add(5, 3);
}
public static void add(int a, int b) {
System.out.println("足し算の結果: " + (a + b));
}
}
足し算の結果: 8
このように、add メソッドは直接出力するだけなので、計算結果を他で使うことができません。
戻り値を使った場合
一方で、戻り値を使えば計算結果を変数に保存して、他の処理にも活用できます。
public class ReturnExample {
public static void main(String[] args) {
int sum = add(5, 3);
System.out.println("足し算の結果: " + sum);
// 他の処理でも利用可能
int doubleSum = sum * 2;
System.out.println("結果を2倍: " + doubleSum);
}
public static int add(int a, int b) {
return a + b;
}
}
足し算の結果: 8
結果を2倍: 16
このように、戻り値を使えば、計算結果を他の処理に利用することができ、プログラムの柔軟性が向上します。
3. 戻り値を使う基本的な方法
Java のメソッドは、処理の結果を戻り値として返すことができます。基本的な使い方を理解するために、簡単な例を見てみましょう。
戻り値のあるメソッドの基本
メソッドの戻り値を指定するには、return キーワードを使います。
public class ReturnExample {
public static void main(String[] args) {
// メソッドを呼び出し、戻り値を変数に保存
int result = getNumber();
System.out.println("戻り値: " + result);
}
// 戻り値を持つメソッド
public static int getNumber() {
return 10;
}
}
戻り値: 10
このように、getNumber メソッドは整数 10 を返し、それを変数 result に保存して表示しています。
4. 異なるデータ型の戻り値を扱う方法
戻り値は、整数(int)だけでなく、文字列(String)、小数(double)、真偽値(boolean)など、さまざまなデータ型を扱うことができます。
文字列を返すメソッド
以下のメソッドは、文字列の戻り値を持ちます。
public class StringReturnExample {
public static void main(String[] args) {
String message = getMessage();
System.out.println(message);
}
public static String getMessage() {
return "こんにちは!";
}
}
こんにちは!
小数を返すメソッド
戻り値に double を指定すると、小数を返すことができます。
public class DoubleReturnExample {
public static void main(String[] args) {
double piValue = getPi();
System.out.println("円周率: " + piValue);
}
public static double getPi() {
return 3.14159;
}
}
円周率: 3.14159
真偽値を返すメソッド
真偽値(boolean)を返すことで、条件分岐の判断に利用できます。
public class BooleanReturnExample {
public static void main(String[] args) {
boolean isAdult = checkAge(20);
System.out.println("成人ですか?: " + isAdult);
}
public static boolean checkAge(int age) {
return age >= 18;
}
}
成人ですか?: true
このように、さまざまなデータ型の戻り値を扱うことで、柔軟なプログラムを作ることができます。
5. 戻り値を使って計算結果を返す方法
メソッドの戻り値を使うことで、計算結果をメソッドの外部で利用できます。例えば、数値を受け取って計算し、その結果を返す方法を見てみましょう。
足し算の結果を返すメソッド
以下のメソッドは、2 つの数を受け取り、合計を戻り値として返します。
public class SumReturnExample {
public static void main(String[] args) {
int total = addNumbers(10, 5);
System.out.println("合計: " + total);
}
public static int addNumbers(int a, int b) {
return a + b;
}
}
合計: 15
割引価格を計算するメソッド
商品価格と割引率を受け取り、割引後の価格を計算して返すメソッドを作成できます。
public class DiscountExample {
public static void main(String[] args) {
double price = calculateDiscountPrice(5000, 0.1);
System.out.println("割引後の価格: " + price + "円");
}
public static double calculateDiscountPrice(double price, double discountRate) {
return price * (1 - discountRate);
}
}
割引後の価格: 4500.0円
最大値を求めるメソッド
2 つの数を比較し、大きい方を返すメソッドを作ることもできます。
public class MaxValueExample {
public static void main(String[] args) {
int max = getMax(15, 20);
System.out.println("最大値: " + max);
}
public static int getMax(int a, int b) {
return (a > b) ? a : b;
}
}
最大値: 20
このように、計算結果を戻り値として返すことで、より柔軟なプログラムを作ることができます。
6. 文字列や配列を戻り値として返す方法
戻り値には、整数や小数だけでなく、文字列や配列も指定できます。これにより、より多くのデータをメソッドの外部で活用できます。
文字列を戻り値として返す
以下のメソッドは、名前を受け取り、挨拶のメッセージを戻り値として返します。
public class StringReturnExample {
public static void main(String[] args) {
String message = createGreeting("田中");
System.out.println(message);
}
public static String createGreeting(String name) {
return "こんにちは、" + name + "さん!";
}
}
こんにちは、田中さん!
配列を戻り値として返す
メソッドの戻り値に配列を指定すると、複数の値を一度に返すことができます。
public class ArrayReturnExample {
public static void main(String[] args) {
int[] numbers = getNumbers();
for (int num : numbers) {
System.out.println("取得した値: " + num);
}
}
public static int[] getNumbers() {
return new int[]{10, 20, 30};
}
}
取得した値: 10
取得した値: 20
取得した値: 30
このように、配列を戻り値として使うことで、複数のデータを一度に扱うことができます。
7. 複数の値をまとめて返す方法(配列を使う方法)
メソッドの戻り値は 1 つですが、配列を使うことで複数の値をまとめて返すことができます。
2 つの数の合計と平均を同時に返す
配列を使って、複数の計算結果を 1 つのメソッドで返すことができます。
public class MultiReturnExample {
public static void main(String[] args) {
double[] results = calculateSumAndAverage(50, 30);
System.out.println("合計: " + results[0]);
System.out.println("平均: " + results[1]);
}
public static double[] calculateSumAndAverage(int a, int b) {
double sum = a + b;
double average = sum / 2;
return new double[]{sum, average};
}
}
合計: 80.0
平均: 40.0
このように、配列を使うことで、1 つのメソッドで複数の値を返すことができます。
8. 戻り値を使う際の注意点(データ型の不一致、戻り値の適切な設計)
戻り値を使う際には、いくつかの注意点があります。特に、データ型の不一致や適切な設計を意識することが重要です。
データ型の不一致に注意
戻り値の型と、変数の型が一致していないとコンパイルエラーになります。
public class TypeMismatchExample {
public static void main(String[] args) {
// エラー: getNumber() は int を返すのに double に代入しようとしている
double value = getNumber();
System.out.println(value);
}
public static int getNumber() {
return 100;
}
}
上記のコードは、getNumber() メソッドが int を返しているのに、double 型の変数に代入しようとしているため、コンパイルエラーになります。
適切な戻り値の設計を意識する
メソッドの戻り値を設計するときは、適切な型を選ぶことが重要です。例えば、数値の計算結果を返す場合、整数なら int、小数を含むなら double を選びます。
例: 不適切な戻り値の型
以下の例では、合計値を int で返してしまい、計算結果が正しく取得できません。
public class WrongReturnTypeExample {
public static void main(String[] args) {
int avg = getAverage(10, 3);
System.out.println("平均: " + avg);
}
public static int getAverage(int a, int b) {
return (a + b) / 2; // 小数部分が切り捨てられる
}
}
平均: 6
この例では、正しく平均を求めるためには double を使うべきです。
適切な戻り値の型を使う
計算結果に小数が含まれる場合は、戻り値の型を double にすることで正確な値を取得できます。
public class CorrectReturnTypeExample {
public static void main(String[] args) {
double avg = getAverage(10, 3);
System.out.println("平均: " + avg);
}
public static double getAverage(int a, int b) {
return (a + b) / 2.0; // 小数を考慮
}
}
平均: 6.5
このように、戻り値の型を適切に設計することで、プログラムの精度を向上させることができます。