[Java]戻り値とはなぜ必要なのか

Javaで使われる戻り値とはなぜ必要なのか、メソッドでreturnはなぜ必要なのかについて説明する。

引数と戻り値を使うことによって、メソッドがどのように便利になるのかも整理する。


まずはメソッドの役割について整理

why-return-value-is-needed


そもそもメソッドとは、やって欲しいいくつかの処理をまとめたものにデータを入力し、終わった処理を出力するために作られたもの。

例えば関数内で足し算をして欲しければ、メソッド内で足し算の処理を記述し、引数をその中に入れる形となる。



why-return-value-is-needed



メソッドについてはこちらでも別途整理した。

[st-card myclass=”” id=2158 label=”” pc_height=”” name=”” bgcolor=”” color=”” fontawesome=”” readmore=”on”]


戻り値がないとどうなる?

戻り値がないということは、処理した計算結果が、出力されないということ。

why-return-value-is-needed


メソッド内で計算したはいいものの、現段階ではその計算結果を使うことができない。


戻り値がない書き方もできる

一応、returnの戻り値を使わなくても、コンソール内に表示させることはできる。

以下の処理を行ってみる。

  1. 引数を使わないでメソッドの中にxとyを宣言
  2. 足し算とコンソール表示の処理までメソッドにかく
  3. そのメソッドを呼び出し


why-return-value-is-needed


すると、メソッド内では計算結果を表示するまでが書かれているので、コンソールには表示される。


ではなぜ戻り値を使うのか?

戻り値を使うことによって、より汎用性のあるメソッドを作れることがあげられる。

例えば上記の戻り値のない書き方例であれば、「1と5を足して、コンソールに表示させる」メソッドを作った。

もしこのメソッドを他でも使いまわしたいなら全く問題ない。

しかしコンソールに表示させず、メソッドから得た値を使ってさらに処理を続けたい場合、このメソッドは使えなくなってしまう。

そこで引数と戻り値を使って、「数を足して、その値を呼び出し元に返す」メソッドを作ってみる。


why-return-value-is-needed


こうすると、加算し終えて呼び出し元に処理が戻った時に、出力した結果をまた別の変数に入れて、引き続き処理を行うこともできる。

また、引数は外から何を入れても良いことになるので、x=1, y=5に固定されなくなる。

引数についてはこちらに書いた。

[st-card myclass=”” id=2322 label=”” pc_height=”” name=”” bgcolor=”” color=”” fontawesome=”” readmore=”on”]


「1と5を足して、コンソールに表示させる」メソッドより、より他のところでも使いやすい、再利用できるメソッドが出来上がった。


戻り値は「なぜ必要か」ではなく、「どこで使いたいか」

戻り値学習の際に陥る罠として、なぜこの機能は必要なのか、ということに囚われすぎてしまうことがあげられるのかもしれない。

ここの回答がとても分かりやすかったので参照したい。

上記リンク先の回答で言えば、「なぜ値を返さなくてはいけないのか」と考えるのではなく、「メソッドにどんな機能を持たせたいのか」という考えが先に来なくてはいけないという。

つまりメソッドの設計の問題。

だから今回の例で言えば、「1と5を足して、コンソールに表示させる」メソッドを作るのが目的なのであれば、returnを使わなくてもOK。

もし「数を足して、その値を呼び出し元に返す」メソッドを作りたいのであれば、returnを使うべき、ということになる。


メソッドを作成する目的は、どこでも再利用できるようにすること

メソッドのメリットの一つとして、「再利用できること」ということがある。

なるべく汎用性があるものを作るよう努力すべきであり、そのためにはreturnは必要となる。

メソッドをどこでも再利用できるようにするために、引数と戻り値は必要になる。

メソッドについては、下記に書いた。


[st-card myclass=”” id=2158 label=”” pc_height=”” name=”” bgcolor=”” color=”” fontawesome=”” readmore=”on”]


全体像を把握する

下記にJavaやwebアプリケーションについての記事をまとめた。


[st-card myclass=”” id=3431 label=”” pc_height=”” name=”” bgcolor=”” color=”” fontawesome=”” readmore=”on”]


コンピューターについての全体像も把握しておくと、プログラミングのさらなる理解に役立つ。


[st-card myclass=”” id=4587 label=”” pc_height=”” name=”” bgcolor=”” color=”” fontawesome=”” readmore=”on”]