
今回は
というテーマでお送りします。
Java超入門コースも終わって、いよいよ入門コース。
今回から メソッド編 です。
第1回目の今回は、メソッド概要・引数・戻り値と
全体的な話をしていきます。

今までの積み上げを生かして頑張ります。
今回も、よろしくお願いします。

全集中で頑張ります!
よろしくお願いします。

目次
【Youtube版】
Youtubeでもお伝えしていますので
是非チェックしてくださいね。
【1】概要

①メリット
Javaプログラミング超入門では
メインメソッドの中に処理を書いてきましたね。
ただ、これから少しずつ大きなプログラムを
作って行くために、メソッドを学んでおきましょう。
ここで学ぶメソッドは、処理を分けて
小さな単位としてまとめたものです。

そして、それは、どんなメリットがあるんですか?
メインメソッドに全てを書いてあるとします。
長くなってくると、多くのステートメントを
書くことになります。
そうすると 全体の見通しが悪くなって、プログラミングする時も
後から見た時も、分かりにくくなってしまいます。
メソッドに分割することで…

全体の見通しが良くなって、分かりやすくなります。
また、メソッド単位でプログラムを捉えると
限られた範囲で処理を作ることができるため
とても考えやすくなります。
そして、処理を部品化しておけば
繰り返し使うこともできて効率も良くなります。
まとめると、こうなります。
プログラム全体の見通しが良い。
✅ メソッド内の処理は
限られた範囲のため 考えやすい。
✅ 処理を部品化しておけば
繰り返し使えて効率的。

②イメージ
メソッドの イメージを 見ていきましょう。
メソッドは、あるデータを受け取って、特定の処理を
した後に新たなデータを返す(戻す)働きをするものです。
そして、このメソッドについては
2つの立場で考えるようにしましょう。
一方は「メソッド側(定義する側)」で
もう一方は、そのメソッドを利用する側です。
メソッドを利用する事を「呼び出す」と言います。
そして、この呼び出し側がメソッドに渡すデータを「引数」といい
メソッドが呼び出し側に返すデータを「戻り値」といいます。

メソッドの呼び出し側は、メソッドにどんな「引数」を渡すと
どんな「戻り値」が返ってくるか分かっていれば…
メソッド内部の処理詳細を知らなくても
そのメソッドを使うことができます。

このイメージは大切なので、押さえておきましょうね。

ノートに絵を書いておきました。バッチリです。
【2】メソッド定義

① 定義する場所
メソッドを定義する場所ですが
クラスの内側に複数記述できます。
基本的には1つのファイルには
1つのクラスを記述しますが…
その内側にメソッドを記述します。
これまでの学習の中では
メインメソッドのみでした。
メインメソッドは、JVMがクラスを実行する時に
最初に処理を開始する場所でしたね。
クラスのブロックの内側に
メインメソッドがありました。
そして、そのメインメソッドに並べる形で
他のメソッドを記述します。

記述する位置は、上でも下でも大丈夫です。
大切なのは、メソッドはクラスブロックの
内側に記述するということです。
Javaでは、メソッドはクラスブロックの
外側には記述できません。
ここが、最重要ポイントですので、押さえておきましょう。
②メソッド名
例を見ながらメソッドを見ていきましょう。
int result = value * value;
return result;
}
この例は、引数を受け取って、2乗した値を
戻り値として返すメソッドです。
まずは、メソッド名です。
メソッド名の後には、必ず丸括弧をつけます。
ですので、プログラムを見る時には
丸括弧のすぐ左側が 『 メソッド名 』 と認識しましょう。
この場合には、square がメソッド名です。
メソッド名は、Java超入門で学んだ
「識別子」(identifire)の 一種です。
覚えていますか?
識別子については、以下の記事で説明しています。
併せて参考にしてくださいね。
【Javaプログラミング超入門 #05】変数
メソッド名は Javaの慣習によって、変数名と同じ
ローワーキャメルケースで記述するのが一般的です。
簡単に復習しておいましょう。
ローワーキャメルケースは、変数名やメソッド名で
使われる方式です。

先頭が小文字で、後に続く文字も小文字ですが。
2つ以上の単語を連結する場合に、その先頭を大文字とします。
この例の場合、studyPlan 最初の s は小文字で
その後の文字も小文字。Planの先頭のPが大文字です。
単語の先頭が、ラクダのコブのようですのでキャメルケース。
その中で、先頭が小文字なので、ローワーキャメルケースといいます。
今回のサンプルのメソッドでは…
square(2乗する)という1つの言葉ですので
全て小文字で表現しています。

メソッドも、変数名と同じローワーキャメルケースですが
メソッドの場合には () 丸括弧がついているので
すぐに区別がつきますね。

ついていればメソッドです。見分けやすいですよね…。
③仮引数(パラメータ)
呼び出し側から受け取るデータは
仮引数(パラメータ)です。
これは、メソッド名の後に()丸括弧を書いて
その中に 「型名 引数名」の形で 記述します。
int result = value * value;
return result;
}
この仮引数は、変数と同じように考えて
メソッド内で使用する事ができます。
変数は、値を入れておく箱でしたね。
そして、その値は呼び出し側で設定して
ありますので、そのまま使うことができます。

④戻り値
戻り値は、呼び出し側に返す値です。
そして、メソッドを定義する時には
メソッド名の前(左側)に、この戻り値の「型」を記述します。
int result = value * value;
return result;
}
この例では、戻り値の型 は int型 ですね。
ですので、メソッド名は square で、int型の引数を
受け取るメソッド。戻り値は int型 と分かります。
また、戻り値の型の前に static と記述してあります。
これは、メソッドに付けることができる修飾子の1つです。
今のところは、すぐに呼び出せるメソッドという意味を
持っていると認識しておきましょう。

もう少し先で、更に詳しく説明しますね。
⑤ブロック内
メソッドのブロック内には
文(ステートメント)を記述します。
変数の宣言や、演算、メソッドの呼び出しを
行うことができます。
そして、ステートメントは上から順に実行していきます。
「順次」と言いましたね。
また、条件分岐や、繰り返しなども行う事ができます。
変数のスコープ(有効範囲)は、宣言されたブロック内と
Java超入門でもお話しました。
メソッドの場合も、ブロック内で宣言した変数は
このメソッド内で使うことができます。

また、メソッドのブロック内で宣言した変数同様
仮引数についても、メソッド内でのみ使用する事ができます。

そして、ここで重要な事は 予約語 return です。
この return により、呼び出し側に実行が戻ります。
更に、この時に return の後に記述した値が
戻り値として呼び出し側に渡される事もポイントです。
ここに指定できるのは、このようなものがあります。
・変数
・定数
・式


仮引数で必要なデータを受け取って、戻り値で結果を返すんですね。
ガッテン、承知の助。
【3】メソッド呼び出し

① 呼び出し方法
今度は、メソッドを呼び出す側を見ていきましょう。
メソッドを呼び出す時には
という形でメソッドを呼び出します。
int valSquared = square(3);
System.out.println(valSquared);
}
int result = value * value;
return result;
}
この例では、square(3) がメソッド呼び出しの部分です。

メソッド名が square で、実引数が 3 です。
②実引数(アーギュメント)
メソッドを呼び出す時には、メソッド名と実引数を指定することを
お話しましたが、この時の実引数を見ていきましょう。
実引数は、メソッドが実行される時の仮引数に
設定(代入)される値の事です。
int valSquared = square(3);
System.out.println(“3 の 2乗は ” + valSquared);
}
実引数には
・変数
・定数
・式
を指定する事ができます。
そして、実引数の型は 仮引数 と一致している必要があります。
今回の例、square(3) では int型リテラルの 3 を
実引数で指定しています。

仮引数の型 int型 と一致していますね。
呼び出す時には仮引数に、この 3 が
設定されることになります。

呼び出し側では、仮引数に入れる値を 実引数として指定するんですね。
バッチリ、理解しました。
③実行位置・戻り値
これまで、Javaプログラムの実行は上から順に
実行していくという話をしてきました。
そして今回は、メソッド呼び出しがされた場合を
見ていきましょう。

左側が呼び出し側、右側がメソッド側です。
①呼び出し側(メインメソッドなど)の処理は
順次で実行しています。(上から下ですね)
②そして、メソッド呼び出し部分が見つかります。
この例では square(3) の部分ですね。
ここで、メソッド呼び出し を行うことになりますが…
③まず、実引数の値が仮引数に設定(代入)されます。

④次に、実行位置がメソッドの先頭行に移ります。

⑤そして、メソッドを順次実行。
⑥処理していって、returnが見つかります。
⑦そうすると、実行位置が呼び出し側に戻る事となります。

この時に呼び出し側に戻り値が渡され
内部的には、呼び出し部分が戻り値に置き換わります。
この場合は、square(3) の部分が
戻り値に置き換わることとなります。
この、置き換わるというイメージは見覚えありますか?


変数を参照すると、その値に置き換わります。
そして、メソッドを呼び出した場合には、戻ってきた時に
その戻り値に置き換わります。

このイメージを持っておきましょう。
⑧そして、実行位置が戻ってくると
呼び出し側は、実行を再開します。
ここでは、 valSquared に 9 が代入されて。
その valSquared を表示する事となります。

大きなプログラムも、スッキリ書けそうです。

どんどん、メソッドを書いていきますよ!
【 まとめ 】
●メソッド概要・引数・戻り値
・ 大枠で捉えやすくなって
プログラム全体の見通しが良い。
・ メソッド内の処理は
限られた範囲のため 考えやすい。
・ 処理を部品化しておけば
繰り返し使えて 効率的。
② イメージ
・「呼び出し側」と「メソッド側」
2つの立場で考えよう。
・ 呼び出し側は、メソッド内部の
処理詳細を知らなくても
メソッドを使うことができる。
・ クラスのブロックの中に定義する。
② メソッド名
・ 丸括弧の前(左側)に記述する。
・ ローワーキャメルケースで書く。
(先頭は小文字、その他も小文字で
単語を連結する場合に
その先頭を大文字)
③ 仮引数(パラメータ)
・ メソッド名の後に()丸括弧を
書いて、その中に記述する。
・「型名 引数名」の形で書く。
・ 変数と同様に、メソッドの
ブロックの中で使うことができる。
④ 戻り値
・ メソッド名の前(左側)に
戻り値の「型」を記述する。
・ return の後に「戻り値」を
記述する。
⑤ ブロック内
・ ステートメントを
上から順に実行していく。
・ ブロック内で宣言された変数の
スコープ(有効範囲)は
このブロック内となる。
・ return の後(右側)に
記述した値を戻り値として
呼び出し側に実行位置が戻る。
・ この記述方法で呼び出す。
メソッド名(実引数)
② 実引数(アーギュメント)
・ メソッドが実行される時の
仮引数に設定(代入)される値。
・ これらが指定できる。
・リテラル
・変数
・定数
・式
③ 実行位置・戻り値
・ メソッド呼び出し時には…
・実引数を仮引数に設定する。
・実行位置がメソッドの
最初のに移る。
・ メソッド側で return により
実行位置は、呼び出し側に戻る。
・ 呼び出し側が 戻り値を受け取ると
メソッド呼び出し部分が、戻り値に
置き換わる。
今回も、ご覧いただき、ありがとうございます。