Java
PR

Javaの戻り値とは?書き方や使い方をわかりやすく解説

dream2020
記事内に商品プロモーションを含む場合があります

Javaでプログラムを書く上で、戻り値の理解は必須です。

この記事では、戻り値の基本から実際のコード例まで、初心者でもすぐに使える形で丁寧に解説します。

戻り値の仕組みをしっかり理解すれば、自分の書くプログラムの幅がぐっと広がりますよ。

戻り値とは何か?基本の解説とサンプルコード

Javaにおける「戻り値(return value)」は、メソッドが処理の結果として呼び出し元に返す値のことを指します。

戻り値を使うことで、メソッドはただ処理を行うだけでなく、その結果を他のコードで再利用できるようになります。

例えば、「足し算をして結果を返す」メソッドを考えてみましょう。

public class Calculator {
    // 2つの整数を受け取り、その合計を返すメソッド
    public int add(int a, int b) {
        int sum = a + b;
        return sum; // 計算結果を戻り値として返す
    }

    public static void main(String[] args) {
        Calculator calc = new Calculator();
        int result = calc.add(3, 5); // 3と5を足して結果を受け取る
        System.out.println("足し算の結果は: " + result); // 結果を表示
    }
}

このコードでは、addメソッドが計算した結果をreturnキーワードで呼び出し元に返しています。mainメソッドでは、その戻り値を変数resultに受け取り、表示しています。

戻り値の役割まとめ

  • メソッドが処理の結果を外に渡す手段
  • 戻り値を受け取ることで、計算や判定の結果を他の処理に使える
  • 戻り値があるメソッドは値を返すことが期待されているので、voidではない

Javaでの戻り値の書き方の詳細

Javaのメソッドで戻り値を使う際は、以下のポイントを押さえましょう。

  • 戻り値の型を指定する
  • returnキーワードで値を返す
  • 戻り値がないメソッドはvoid

戻り値の型を指定する

メソッド宣言の最初に戻り値のデータ型を書く必要があります。例えば、戻り値が整数ならint、文字列ならString、戻り値がない場合はvoidを使います。

public int getNumber() {
    return 42;
}

public void printMessage() {
    System.out.println("戻り値はありません");
}

returnキーワードで値を返す

メソッド内でreturn 値;を書くことで、指定した値が呼び出し元に返されます。戻り値の型とreturnの値の型は必ず一致させる必要があります。

public String getGreeting() {
    return "こんにちは";
}

戻り値がないメソッドはvoid

処理だけ行い値を返さないメソッドは戻り値の型をvoidにします。returnを使わず、呼び出し元は値を受け取りません。

public void showHello() {
    System.out.println("Hello!");
}

戻り値の使い方の具体例と応用

  1. 計算結果を返す
  2. 判定の結果を返す(真偽値)
  3. オブジェクトを返す

1. 計算結果を返す

先ほどの足し算メソッドのように、計算結果を返すのは戻り値の最も基本的な使い方です。引数として受け取った値を処理し、その結果を返せます。

2. 判定の結果を返す(真偽値)

戻り値はboolean型もよく使われます。例えば、数値が偶数かどうかを判定して結果を返すメソッド。

public boolean isEven(int number) {
    return number % 2 == 0;
}

呼び出し元では、

if (isEven(4)) {
    System.out.println("4は偶数です");
} else {
    System.out.println("4は奇数です");
}

のように使います。

3. オブジェクトを返す

メソッドの戻り値はプリミティブ型だけでなく、クラスのインスタンス(オブジェクト)を返すことも可能です。

public class User {
    String name;
    int age;

    public User(String name, int age) {
        this.name = name;
        this.age = age;
    }
}

public User createUser() {
    return new User("シン", 30);
}

このように戻り値を利用すると、複雑なデータもメソッドから返して扱えます。

戻り値の注意点とよくあるミス

  • 戻り値を返さないとコンパイルエラーになる
  • voidメソッドでreturnに値を返してはいけない

戻り値を返さないとコンパイルエラーになる

戻り値の型を指定したメソッドでreturnを書き忘れるとコンパイルエラーになります。必ず全てのパスで値を返すようにしましょう。

voidメソッドでreturnに値を返してはいけない

戻り値がないメソッドはreturnだけ(何も返さない)か、return自体を書かなくてもOKですが、値を返すとエラーになります。

演習問題

  • 問題1: 2つの整数の差を計算して返すメソッドを作ってください。
  • 問題2: 渡された文字列が「Java」と等しいかどうかを判定するメソッドを作ってください。
  • 問題3: 引数に与えられた名前を使って、Userオブジェクトを生成して返すメソッドを作ってください。(Userクラスはnameフィールドのみを持つ)

問題1: 2つの整数の差を計算して返すメソッドを作ってください。

解答例

public int subtract(int a, int b) {
    return a - b;
}

問題2: 渡された文字列が「Java」と等しいかどうかを判定するメソッドを作ってください。

解答例

public boolean isJava(String text) {
    return "Java".equals(text);
}

問題3: 引数に与えられた名前を使って、Userオブジェクトを生成して返すメソッドを作ってください。(Userクラスはnameフィールドのみを持つ)

解答例

public class User {
    String name;

    public User(String name) {
        this.name = name;
    }
}

public User createUser(String name) {
    return new User(name);
}

よくある質問(FAQ)

  • Q1: 戻り値がvoidのメソッドは戻り値を受け取れますか?
  • Q2: メソッドで複数の値を戻り値として返せますか?
  • Q3: 戻り値を返さないvoidメソッドでreturnを書く意味は?
  • Q4: 戻り値の型と異なる型の値を返すとどうなりますか?
  • Q5: 戻り値があるメソッドは必ずreturnを書かなければいけませんか?

Q1: 戻り値がvoidのメソッドは戻り値を受け取れますか?

A: いいえ。voidのメソッドは戻り値を返さないため、呼び出し元で値を受け取ることはできません。

Q2: メソッドで複数の値を戻り値として返せますか?

A: Javaは1つの戻り値しか返せません。複数の値を返したい場合は、配列やリスト、またはカスタムクラスを使ってまとめて返します。

Q3: 戻り値を返さないvoidメソッドでreturnを書く意味は?

A: 処理の途中でメソッドを終了したい場合にreturn;と書けます。ただし、値は返せません。

Q4: 戻り値の型と異なる型の値を返すとどうなりますか?

A: コンパイルエラーになります。戻り値の型とreturnで返す値の型は厳密に一致している必要があります。

Q5: 戻り値があるメソッドは必ずreturnを書かなければいけませんか?

A: はい。戻り値の型がvoid以外の場合、メソッドのすべての実行パスでreturnが必要です。書き忘れるとコンパイルエラーになります。

まとめ

記事としては以上です。もし内容の追加や調整が必要なら教えてください。
技術的には正確で、かつ初心者が理解しやすい表現を優先しました。

ABOUT ME
記事URLをコピーしました