
Java超|メソッドの戻り値と使い方
メソッドは処理して終わりではありません。return で結果を返せるようになると、悟空オブジェクトから名前や戦闘力を受け取り、次の処理へつなげられます。
これまで、メソッドには引数を渡せることを学んできました。
たとえば、悟空の名前、戦闘力、流派の印、流派名を設定するときは、呼び出し側からメソッドへ値を渡していました。
goku.setSaiyanData("悟空", 9000, "亀", "亀仙流");このように、呼び出し元からメソッドへ情報を送ることで、オブジェクトの状態を設定できます。
ただ、メソッドのやり取りは、呼び出し元からメソッドへ送るだけではありません。
今度は逆に、メソッドの中で得られた結果を、呼び出し元へ返すこともできます。
この返ってくる値を戻り値といいます。
ドラゴンボールの世界観でたとえると、悟空に対して「今の名前を教えて」「現在の戦闘力を報告して」「流派の印を確認して」とたずねる場面です。
悟空オブジェクトは自分の状態を確認し、その結果を呼び出し元へ返します。
つまり、引数が「こちらから悟空へ渡す情報」なら、戻り値は「悟空からこちらへ返ってくる報告」です。
この記事では、メソッドの戻り値、return、void、戻り値を変数に入れて使う流れを、ドラゴンボールの世界観に置き換えて整理していきます。
戻り値はメソッドから呼び出し元へ返される情報
戻り値とは、メソッドの処理結果として呼び出し元へ返される値です。
引数は、次のような向きでした。
| しくみ | 向き | 役割 |
|---|---|---|
| 引数 | 呼び出し元 → メソッド | 値を渡す |
一方、戻り値は逆向きです。
| しくみ | 向き | 役割 |
|---|---|---|
| 戻り値 | メソッド → 呼び出し元 | 値を返す |
ドラゴンボールでたとえると、引数は「管理画面から悟空へ戦士情報を登録すること」です。
戻り値は「悟空から現在の名前や戦闘力を報告してもらうこと」です。
この「行きは引数、帰りは戻り値」という感覚を持つと、メソッドの役割がかなり整理しやすくなります。
| Javaのしくみ | ドラゴンボールでのイメージ |
|---|---|
| 引数 | 悟空へ情報を渡す |
| 戻り値 | 悟空から情報を受け取る |
| return | 報告結果を返す合図 |
| void | 報告結果を返さない行動 |
戻り値を持つメソッドは型を書く
戻り値を持つメソッドでは、メソッド名の前に返す値の型を書きます。
たとえば、戦士の名前を返すなら String 型です。
String getName()
{
System.out.println("戦士の名前を調べました。");
return name;
}戦闘力を返すなら int 型です。
int getPower()
{
System.out.println("戦闘力を調べました。");
return power;
}流派の印や流派名を返すなら、どちらも文字列なので String 型です。
String getStyleMark()
{
System.out.println("流派の印を調べました。");
return styleMark;
}
String getStyleName()
{
System.out.println("流派名を調べました。");
return styleName;
}このとき、String や int が戻り値の型です。
| 返したい情報 | 戻り値の型 | メソッド例 |
|---|---|---|
| 戦士の名前 | String | getName() |
| 戦闘力 | int | getPower() |
| 流派の印 | String | getStyleMark() |
| 流派名 | String | getStyleName() |
ここで大切なのは、返す値の種類に合わせて型を書くことです。
名前、流派の印、流派名は文字列なので String。
戦闘力は整数なので int。
このように、「何を返したいか」によって戻り値の型が決まります。
return は値を返す合図
戻り値を返すときに使うのが return です。
return name;これは、name の値を呼び出し元へ返します、という意味です。
また、次のように書けば、power の値を返します。
return power;ドラゴンボールでたとえると、悟空オブジェクトが自分の登録データを確認し、「現在の名前はこちらです」「現在の戦闘力はこちらです」と報告書を返すようなイメージです。
return には、もうひとつ大事な特徴があります。
return が実行されると、そのメソッドの処理はそこで終了します。
| 役割 | 内容 |
|---|---|
| 値を返す | return の後ろに書いた値を呼び出し元へ返す |
| 処理を終える | return が実行された時点でメソッドを終了する |
最初は、return は「この値を返して、メソッドを終える合図」と覚えると分かりやすいです。
図:戻り値はメソッドから呼び出し元へ返る

この図が示していること
この図は、goku.getName() や goku.getPower() を呼び出したあと、メソッドの中で return が実行され、値が呼び出し元へ戻る流れを示しています。
getName() は name の値を返します。
getPower() は power の値を返します。
戻ってきた値は、warriorName や warriorPower という変数に代入されます。
この図から分かることは、戻り値はメソッドの中にある情報を呼び出し元へ持ち帰るしくみだということです。
メソッドを呼ぶだけで終わるのではなく、結果を受け取って次の処理に使えるところが大切です。
戻り値を持つメソッドを確認する
戻り値を持つメソッドを、サイヤ人管理プログラムで見ていきましょう。
ファイル名:Sample6.java
class Saiyan
{
String name;
int power;
String styleMark;
String styleName;
String getName()
{
System.out.println("戦士の名前を調べました。");
return name;
}
int getPower()
{
System.out.println("戦闘力を調べました。");
return power;
}
String getStyleMark()
{
System.out.println("流派の印を調べました。");
return styleMark;
}
String getStyleName()
{
System.out.println("流派名を調べました。");
return styleName;
}
void setSaiyanData(String n, int p, String mark, String style)
{
name = n;
power = p;
styleMark = mark;
styleName = style;
System.out.println("戦士の名前を" + name + "に、戦闘力を" + power + "にしました。");
System.out.println("流派の印を「" + styleMark + "」に、流派名を" + styleName + "にしました。");
}
void show()
{
System.out.println("戦士の名前は" + name + "です。");
System.out.println("戦闘力は" + power + "です。");
System.out.println("流派の印は「" + styleMark + "」です。");
System.out.println("流派名は" + styleName + "です。");
}
}
class Sample6
{
public static void main(String[] args)
{
Saiyan goku = new Saiyan();
goku.setSaiyanData("悟空", 9000, "亀", "亀仙流");
String warriorName = goku.getName();
int warriorPower = goku.getPower();
String warriorStyleMark = goku.getStyleMark();
String warriorStyleName = goku.getStyleName();
System.out.println("調査結果");
System.out.println("名前は" + warriorName + "、戦闘力は" + warriorPower + "でした。");
System.out.println("流派の印は「" + warriorStyleMark + "」、流派名は" + warriorStyleName + "でした。");
}
}Saiyan クラスの役割
このプログラムでは、Saiyan クラスでサイヤ人戦士を表しています。
class Saiyan
{
String name;
int power;
String styleMark;
String styleName;name は戦士の名前を保存するフィールドです。
power は戦闘力を保存するフィールドです。
styleMark は流派の印を保存するフィールドです。
styleName は流派名を保存するフィールドです。
ドラゴンボールでたとえると、Saiyan はサイヤ人を登録するための設計図です。
その中に、名前、戦闘力、流派の印、流派名といった戦士の情報を持たせています。
| フィールド | 意味 | 例 |
|---|---|---|
| name | 戦士の名前 | 悟空 |
| power | 戦闘力 | 9000 |
| styleMark | 流派の印 | 亀 |
| styleName | 流派名 | 亀仙流 |
この4つの情報を設定したり、調べたりするために、いくつかのメソッドを用意しています。
setSaiyanData は値を受け取るメソッド
まず、setSaiyanData を見てみましょう。
void setSaiyanData(String n, int p, String mark, String style)
{
name = n;
power = p;
styleMark = mark;
styleName = style;
System.out.println("戦士の名前を" + name + "に、戦闘力を" + power + "にしました。");
System.out.println("流派の印を「" + styleMark + "」に、流派名を" + styleName + "にしました。");
}このメソッドは、名前、戦闘力、流派の印、流派名を受け取って、フィールドに保存します。
goku.setSaiyanData("悟空", 9000, "亀", "亀仙流");この呼び出しでは、実引数として 悟空、9000、亀、亀仙流 を渡しています。
| 実引数 | 仮引数 | 保存先 |
|---|---|---|
| 悟空 | n | name |
| 9000 | p | power |
| 亀 | mark | styleMark |
| 亀仙流 | style | styleName |
このメソッドの戻り値の型は void です。
void setSaiyanData(String n, int p, String mark, String style)void は、値を返さないという意味です。
つまり setSaiyanData は、呼び出し元から値を受け取って、悟空オブジェクトの情報を設定するメソッドです。
結果を呼び出し元へ返すのではなく、フィールドの状態を書き換えることが役割です。
ドラゴンボールでたとえると、サイヤ人登録データに「名前は悟空、戦闘力は9000、流派の印は亀、流派名は亀仙流」と登録する処理です。
getName は名前を返すメソッド
次に getName を見てみましょう。
String getName()
{
System.out.println("戦士の名前を調べました。");
return name;
}このメソッドは、String 型の値を返します。
String getName()メソッド名の前に String があるので、このメソッドは文字列を返すメソッドです。
中では、次の処理をしています。
| 順番 | 処理 | 内容 |
|---|---|---|
| 1 | 表示する | 戦士の名前を調べました。 |
| 2 | return name; | name の値を呼び出し元へ返す |
たとえば name に 悟空 が入っていれば、getName は 悟空 を返します。
main メソッドでは、次のように戻り値を受け取っています。
String warriorName = goku.getName();この1行では、次の流れが起きています。
| 順番 | 処理 | 内容 |
|---|---|---|
| 1 | goku.getName() を呼ぶ | 名前を調べるメソッドを実行する |
| 2 | return name; が実行される | name の値が返る |
| 3 | warriorName に代入される | 返ってきた 悟空 が入る |
つまり、getName はただ表示するだけではありません。
name の値を呼び出し元へ返し、その値を変数 warriorName に入れて使えるようにしています。
getPower は戦闘力を返すメソッド
getPower も同じ考え方です。
int getPower()
{
System.out.println("戦闘力を調べました。");
return power;
}このメソッドは、int 型の値を返します。
int getPower()戦闘力は整数なので、戻り値の型は int です。
中では、次のような流れで処理されます。
| 順番 | 処理 | 内容 |
|---|---|---|
| 1 | 表示する | 戦闘力を調べました。 |
| 2 | return power; | power の値を呼び出し元へ返す |
main メソッドでは、次のように受け取っています。
int warriorPower = goku.getPower();この1行では、getPower の戻り値が warriorPower に入ります。
| 呼び出し | 戻り値 | 代入先 |
|---|---|---|
| goku.getName() | name の値 | warriorName |
| goku.getPower() | power の値 | warriorPower |
このように、戻り値は変数に代入して使えます。
getStyleMark と getStyleName は流派情報を返すメソッド
今回のプログラムでは、流派情報も戻り値として返せるようにしています。
String getStyleMark()
{
System.out.println("流派の印を調べました。");
return styleMark;
}
String getStyleName()
{
System.out.println("流派名を調べました。");
return styleName;
}どちらも String 型の値を返すメソッドです。
| メソッド | 戻り値の型 | 返すフィールド |
|---|---|---|
| getStyleMark() | String | styleMark |
| getStyleName() | String | styleName |
main メソッドでは、次のように戻り値を受け取っています。
String warriorStyleMark = goku.getStyleMark();
String warriorStyleName = goku.getStyleName();この2行によって、goku オブジェクトの中にある styleMark と styleName の値を、呼び出し元の変数に取り出せます。
| 呼び出し | 戻り値 | 代入先 |
|---|---|---|
| goku.getStyleMark() | styleMark の値 | warriorStyleMark |
| goku.getStyleName() | styleName の値 | warriorStyleName |
流派情報を戻り値として受け取る
この記事では、流派を表す情報として styleMark と styleName を使います。
styleMark は、流派を短く表す印です。
styleName は、流派の正式な名前です。
| styleMark | styleName |
|---|---|
| 亀 | 亀仙流 |
| 鶴 | 鶴仙流 |
| 武 | 武泰斗流 |
| 塔 | カリン流 |
| 魔 | ピッコロ魔族流 |
| 神 | 神流(ナメック流) |
| 惑 | 惑星戦士流 |
| 界 | 北の界王流 |
Sample6.java では、悟空の流派を次のように設定しています。
| フィールド | 設定値 |
|---|---|
| styleMark | 亀 |
| styleName | 亀仙流 |
そのあと、getStyleMark() と getStyleName() によって、設定された流派情報を呼び出し元へ返しています。
ドラゴンボールでたとえると、悟空オブジェクトに「現在の流派を報告して」と確認し、悟空が「印は亀、流派名は亀仙流です」と返してくれるようなイメージです。
実行結果
Sample6.java を実行すると、次のような結果になります。
戦士の名前を悟空に、戦闘力を9000にしました。
流派の印を「亀」に、流派名を亀仙流にしました。
戦士の名前を調べました。
戦闘力を調べました。
流派の印を調べました。
流派名を調べました。
調査結果
名前は悟空、戦闘力は9000でした。
流派の印は「亀」、流派名は亀仙流でした。この実行結果から、処理の流れが見えてきます。
最初に setSaiyanData で名前、戦闘力、流派の印、流派名を設定しています。
次に getName で名前を調べ、その値を warriorName に入れています。
getPower で戦闘力を調べ、その値を warriorPower に入れています。
さらに getStyleMark と getStyleName で流派情報を調べ、それぞれの変数に入れています。
最後に、受け取った値を使って調査結果を表示しています。
ドラゴンボールでたとえると、次のような流れです。
| プログラムの処理 | ドラゴンボールでたとえると |
|---|---|
| setSaiyanData("悟空", 9000, "亀", "亀仙流") | サイヤ人登録データに悟空の情報を登録する |
| getName() | 戦士の名前を確認して報告する |
| getPower() | 戦闘力を確認して報告する |
| getStyleMark() | 流派の印を確認して報告する |
| getStyleName() | 流派名を確認して報告する |
| 表示処理 | 報告書として結果を読み上げる |
図:戻り値は変数に入れて再利用できる

この図が示していること
この図では、goku.getName()、goku.getPower()、goku.getStyleMark()、goku.getStyleName() によって返された値が、呼び出し元の変数に入る流れを示しています。
戻り値を変数に入れると、その場で表示して終わるだけではなく、あとから別の処理でも使えるようになります。
ここから分かるのは、戻り値は「結果を受け取るためのしくみ」であり、受け取った値を再利用できるところに大きな意味があるということです。
戻り値は変数に入れて使える
戻り値の便利なところは、返ってきた値を呼び出し元で使えることです。
String warriorName = goku.getName();
int warriorPower = goku.getPower();
String warriorStyleMark = goku.getStyleMark();
String warriorStyleName = goku.getStyleName();この4行では、戻り値をそれぞれ変数に入れています。
| 戻り値を返す処理 | 返ってくる値 | 受け取る変数 |
|---|---|---|
| goku.getName() | name の値 | warriorName |
| goku.getPower() | power の値 | warriorPower |
| goku.getStyleMark() | styleMark の値 | warriorStyleMark |
| goku.getStyleName() | styleName の値 | warriorStyleName |
変数に入れることで、その値をあとから使えます。
たとえば、今回のプログラムでは表示に使っています。
System.out.println("名前は" + warriorName + "、戦闘力は" + warriorPower + "でした。");
System.out.println("流派の印は「" + warriorStyleMark + "」、流派名は" + warriorStyleName + "でした。");戻り値は、表示だけでなく、計算や条件分岐にも使えるようになります。
たとえば今後、戦闘力が一定以上なら強敵と戦える、戦闘力が低ければ修行させる、流派によって表示する説明を変える、という判断にもつなげられます。
ドラゴンボールでたとえると、悟空から戦闘力の報告を受け取り、その報告をもとに次の修行メニューや戦闘配置を決められるようになるイメージです。
戻り値を使わずに呼び出すこともできる
戻り値があるメソッドは、必ず変数に代入しなければならないわけではありません。
たとえば、次のように呼び出すこともできます。
goku.getPower();この場合、getPower メソッドの中身は実行されます。
int getPower()
{
System.out.println("戦闘力を調べました。");
return power;
}そのため、戦闘力を調べました。という表示は行われます。
ただし、return power; によって返された値は、呼び出し元で受け取られていません。
つまり、戻り値は返ってきているけれど、使われずに終わっています。
| 呼び出し方 | 戻り値の扱い |
|---|---|
| int warriorPower = goku.getPower(); | 戻り値を変数に入れて使う |
| goku.getPower(); | メソッドは実行されるが、戻り値は使わない |
戻り値を使わない呼び出しもできますが、getName や getPower のようなメソッドは、返ってきた値を使うために用意することが多いです。
ドラゴンボールでたとえると、悟空が戦闘力を報告してくれたのに、その報告書を読まずに置いておくような状態です。
動きとしては間違いではありませんが、せっかくなら受け取った結果を活用したほうが便利です。
戻り値がないメソッドでは void を使う
戻り値を返さないメソッドでは、戻り値の型のところに void を書きます。
Sample6.java では、setSaiyanData と show が void のメソッドです。
void setSaiyanData(String n, int p, String mark, String style)
void show()void は、値を返さないという意味です。
| メソッド | 戻り値 | 主な役割 |
|---|---|---|
| getName() | あり | 名前を返す |
| getPower() | あり | 戦闘力を返す |
| getStyleMark() | あり | 流派の印を返す |
| getStyleName() | あり | 流派名を返す |
| setSaiyanData(String n, int p, String mark, String style) | なし | 名前、戦闘力、流派情報を設定する |
| show() | なし | 名前、戦闘力、流派情報を表示する |
setSaiyanData は、名前、戦闘力、流派の印、流派名を設定することが目的です。
show は、現在の状態を表示することが目的です。
どちらも、呼び出し元へ値を返す必要がないので void を使っています。
void のメソッドでも return; は書ける
戻り値のない void メソッドでも、何も値を返さない return; を書くことはできます。
たとえば、次のような形です。
void setSaiyanData(String n, int p, String mark, String style)
{
name = n;
power = p;
styleMark = mark;
styleName = style;
System.out.println("戦士の名前を" + name + "に、戦闘力を" + power + "にしました。");
System.out.println("流派の印を「" + styleMark + "」に、流派名を" + styleName + "にしました。");
return;
}この return; は、ここでメソッドを終了して呼び出し元へ戻ります、という意味です。
ただし、この例では return; がなくても、最後の } まで進めば自然にメソッドは終わります。
そのため、今回のような単純な処理では return; を省略しても問題ありません。
| 書き方 | 意味 |
|---|---|
| return 値; | 値を返してメソッドを終える |
| return; | 値を返さずにメソッドを終える |
| void メソッドの最後まで進む | 値を返さずに自然に終わる |
ここで注意したいのは、戻り値の型が int や String のメソッドでは、基本的にその型に合う値を return で返す必要があることです。
たとえば、int getPower() なら int 型の値を返します。
return power;String getName() なら String 型の値を返します。
return name;型と返す値が対応しているかを見ることが大切です。
引数と戻り値は逆向きのやり取り
引数と戻り値は、メソッドを理解するうえでとても重要な組み合わせです。
| しくみ | 向き | 例 | 役割 |
|---|---|---|---|
| 引数 | 呼び出し元 → メソッド | setSaiyanData("悟空", 9000, "亀", "亀仙流") | 値を渡す |
| 戻り値 | メソッド → 呼び出し元 | getName(), getPower() | 値を返す |
setSaiyanData は、呼び出し元から 悟空、9000、亀、亀仙流 を受け取ります。
goku.setSaiyanData("悟空", 9000, "亀", "亀仙流");これは、呼び出し元からメソッドへ情報を送っています。
一方、getName、getPower、getStyleMark、getStyleName は、メソッドから呼び出し元へ値を返します。
String warriorName = goku.getName();
int warriorPower = goku.getPower();
String warriorStyleMark = goku.getStyleMark();
String warriorStyleName = goku.getStyleName();これは、メソッドから呼び出し元へ情報が戻ってきています。
| Javaのしくみ | ドラゴンボールでたとえると |
|---|---|
| 引数 | 管理画面から悟空へ戦士データを渡す |
| 戻り値 | 悟空から管理画面へ現在の状態を報告する |
この2つを使えるようになると、メソッドは一方通行の処理ではなく、情報をやり取りするしくみとして見えてきます。
図:引数と戻り値は逆向きのやり取り

この図が示していること
この図は、引数と戻り値の向きの違いを示しています。
setSaiyanData("悟空", 9000, "亀", "亀仙流") では、呼び出し元から goku オブジェクトへ値を渡しています。
これは引数の流れです。
一方、getName() や getPower() では、goku オブジェクトの中にある値が呼び出し元へ返ってきます。
これは戻り値の流れです。
この図から分かることは、メソッドは値を受け取るだけでなく、処理結果を返すこともできるということです。
戻り値を使うと処理を広げられる
戻り値を使えるようになると、メソッドの結果をあとで利用できます。
たとえば getPower が 9000 を返した場合、その値は次のようなことに使えます。
| 活用例 | 内容 |
|---|---|
| 表示に使う | 戦闘力は9000でした。と表示する |
| 計算に使う | 戦闘力に修行後の上昇量を足す |
| 条件分岐に使う | 戦闘力が一定以上なら強敵に挑む |
| 別のメソッドに渡す | 取得した戦闘力を別の処理で使う |
今回の Sample6.java では、戻り値を表示に使っています。
System.out.println("名前は" + warriorName + "、戦闘力は" + warriorPower + "でした。");
System.out.println("流派の印は「" + warriorStyleMark + "」、流派名は" + warriorStyleName + "でした。");今はシンプルな表示だけですが、戻り値の本当の便利さは、受け取った結果を次の処理につなげられるところにあります。
ドラゴンボールでたとえると、悟空から返ってきた戦闘力報告を見て、次のような判断につなげられます。
| 戦闘力 | 判断 |
|---|---|
| 9000以上 | 強敵との戦闘に参加できる |
| 5000以上 | 追加修行してから出撃する |
| 3000未満 | まず回復や基礎修行を優先する |
このように、戻り値はプログラムに「次の判断材料」を与えてくれます。
メソッドは処理するだけでなく結果を返せる
戻り値を学ぶと、メソッドの見え方が少し変わります。
戻り値を知らない段階では、メソッドは「処理を実行するもの」「画面に表示するもの」と見えやすいです。
しかし戻り値が分かると、メソッドは「結果を作って返す部品」として使えるようになります。
| メソッドの見方 | 内容 |
|---|---|
| 戻り値なし | 処理を実行して終わる |
| 戻り値あり | 処理した結果を呼び出し元へ返す |
getName、getPower、getStyleMark、getStyleName は、ただ表示するためだけのメソッドではありません。
名前、戦闘力、流派の印、流派名という情報を、呼び出し元で使える形にして返すメソッドです。
ここが戻り値の大切なところです。
いちばん大事な感覚
メソッドの戻り値と使い方で大切なのは、次の感覚です。
| ポイント | 内容 |
|---|---|
| 戻り値 | メソッドから呼び出し元へ返される値 |
| 戻り値の型 | 返す値の種類をメソッド名の前に書く |
| return | 値を返してメソッドを終了する |
| 変数への代入 | 戻り値は呼び出し元で受け取って使える |
| void | 値を返さないメソッドに使う |
| 引数との違い | 引数は渡す、戻り値は返す |
ドラゴンボールでたとえると、setSaiyanData は悟空に名前、戦闘力、流派情報を登録するための命令です。
getName、getPower、getStyleMark、getStyleName は、悟空から名前、戦闘力、流派情報を報告してもらうための命令です。
こちらから値を渡すだけでなく、メソッドから結果を返してもらえるようになると、プログラムの組み立て方が一気に広がります。
メソッドは、ただ処理を実行するだけのものではありません。
必要な情報を受け取り、処理を行い、その結果を呼び出し元へ返すこともできる、Javaのとても大切な部品です。
