Javaのreturn文で複数の値を得る方法を現役エンジニアが解説【初心者向け】

初心者向けにJavaのreturn文で複数の値を得る方法について解説しています。ここではクラス型を利用し2つの値を取得する方法について例を使って説明します。サンプルコードで処理の流れを確認しましょう。

TechAcademyマガジンはオンラインのプログラミングスクールTechAcademy [テックアカデミー]が運営する教育×テクノロジーのWebメディアです。初心者でもすぐ勉強できる記事が2,000以上あります。

Javaのreturn文で複数の値を得る方法について、TechAcademyのメンター(現役エンジニア)が実際のコードを使用して初心者向けに解説します。

 

Javaについてそもそもよく分からないという方は、Javaとは何なのか解説した記事を読むとさらに理解が深まります。

 

なお本記事は、TechAcademyのオンラインブートキャンプ、Java講座の内容をもとに作成しています。

 

田島悠介

今回は、Javaに関する内容だね!

大石ゆかり

どういう内容でしょうか?

田島悠介

return文で複数の値を得る方法について詳しく説明していくね!

大石ゆかり

お願いします!

 

複数の値を得る方法とは?

通常、return文を使用した戻り値は、下記サンプルコードにあるcircleAreaのように1つの戻り値しか返せません。

public class Main {
	public static void main(String[] args) {
		double circleArea = area(5);
		System.out.println("円の面積は" + circleArea + "です。");
	}
	private static double area(int num1) {
		double circleArea = num1 * num1 * 3.14;
		return circleArea;
	}
}

実行結果

円の面積は78.5です。

複数の値をreturn文で戻したい場合は、1つの配列変数かクラス型変数に値をまとめて返す必要があります。

【複数の戻り値が同じデータ型の場合】
1.配列変数を利用して値を戻す
配列変数の中には、データ型が同等の複数の値を代入できます。

【複数の戻り値が異なるデータ型の場合】
1.Objact型の配列を利用して値を戻す
クラス型(参照型)であればObject型配列変数の中に複数のクラス型を代入できます。

2.クラス型を利用して値を戻す
オブジェクトの返却後、そのオブジェクトのフィールドを呼び出すことで値を取り出せます。

 

1つのクラスにして返してみる

今回はクラス型を利用して値を戻す方法で考えてみます。

複数の値を返すには、複数の変数(フィールド)を持った1つのクラスを作成します。

変数circle(円周)も変数circleArea(円の面積)も返したいときには、下記サンプルのようにcircleとcircleAreaを持つ1つのクラスにすれば返すことができます。

public class Circle {
    double circle;			// 円周
    double circleArea;	// 円の面積
}

 

[PR] Javaで挫折しない学習方法を動画で公開中

実際に書いてみよう

public class Circle {
    double circle;			// 円周
    double circleArea;	// 円の面積
}
public class Sub {
    public Circle calcCircle(int r) {
        Circle cir = new Circle();
        cir.circle = 2 * r * 3.14;
        cir.circleArea = r * r * 3.14;
        return cir;
    }
}
public class Main {
    public static void main(String[] args) {
        Sub sub = new Sub();
        Circle cir = sub.calcCircle(5);

        System.out.println(cir.circle);
        System.out.println(cir.circleArea);
    }
}

実行結果

31.400000000000002
78.5

今回はCircleクラスが複数の値を戻すクラスとしています。

SubクラスのcalcCircle()メソッドで円周(circle)と円の面積(circleArea)を計算し、計算結果をCircleクラスのフィードに設定しています。calcCircle()メソッドからの戻り値は2つの値が設定されたCircleオブジェクトになります。

main()メソッドでは、戻り値として受け取ったCircleオブジェクトからそれぞれのフィールドの値を取り出すことで、複数の値を取得できています。

 

監修してくれたメンター

松井紀明

メーカー系で17年エンジニアとして勤務後、現在はフリーのエンジニアとしてリモートワークで働いています。
Java、Perl、COBOL、最近ではRuby、PHP等、様々な言語での開発を経験しています。TechAcademyではJavaコースを担当しています。

 

大石ゆかり

内容分かりやすくて良かったです!

田島悠介

ゆかりちゃんも分からないことがあったら質問してね!

大石ゆかり

分かりました。ありがとうございます!

TechAcademyでは、初心者でも最短4週間で、JavaやServletの技術を使ってWebアプリケーション開発を習得できる、オンラインブートキャンプを開催しています。

 

また、現役エンジニアから学べる無料体験も実施しているので、ぜひ参加してみてください。