Javaの基本文法のうち、メソッドについて説明します。
目次
メソッドとは
処理を記述するものです。他の言語では関数とも言われる場合があります。
数学で習った「関数」と同じです。(例 y = x + 1)
x=1の場合はy=2となるように、何か値を代入する(引数を渡すと)と答えが求まる(戻り値が返る)ものです。
メソッドの基本文法
アクセス修飾子 戻り値 メソッド名([引数],[引数],[引数]) { ・・・具体的な処理・・・ return 戻り値; }
[]は省略化を意味する
サンプル
public int add(int a, int b) { return a + b; }
引数a:1、引数b:2を渡すと戻り値は3になります。
アクセス修飾子
アクセス修飾子とはそのメソッドが呼び出される範囲を指定するものです。
public | どこからでも呼び出せる |
protected | 同じパッケージか、そのサブクラスからしか呼び出せない。 |
(省略) | 同じパッケージ内からしか呼び出せない。 |
private | 同じクラス内からしか呼び出せない。 |
戻り値
結果を返す型を示します。
プリミティブ型(int, long, float, doubleなど)のほかにクラスも指定可能です。
また、戻り値を返さない場合はvoidを指定します。
サンプル | 解説 |
---|---|
public int sample() {} | プリミティブ型のint型を戻り値に指定 |
public Integer sample() {} | Integerクラスを戻り値に指定 |
public String sample() {} | Stringクラスを戻り値に指定 |
public String[] sample() {} | Stringクラスの配列を戻り値に指定 |
public List<String> sample() {} | Stringを要素に持つListクラスを配列に指定 |
public void sample() {} | 戻り値なし |
メソッド名
メソッドの名称をつけます。分かりやすい名称をつければよいでしょう。
Javaの世界ではメソッドの命名規則として以下の暗黙的なルールがあります。
- 先頭は小文字から始める
- 2つ以上の単語からなる場合は2つ目移行の単語は大文字から始める
- 動詞+名詞にする
例えば、文字列を変換するようなメソッドであれば以下のような名称が用いられます。
- convert
- convertString
- convertInt2String(intからStringへの変換などを想定)
引数
メソッドに渡す入力値です。
プリミティブ型(int, long, float, doubleなど)のほかにクラスも指定可能です。
また、引数を何も渡さないことも可能です。
引数の数は任意ですが、あまり多くならないように心がけましょう。
サンプル | 解説 |
---|---|
public int sample() {} | 引数なし |
public int sample(int a) {} | プリミティブ型のintを1つ指定 |
public int sample(int a, int b) {} | プリミティブ型のintを2つ指定 |
public int sample(String[] a) {} | Stringクラスの配列を1つ指定 |
public int sample(List<String> a) {} | Stringを要素に持つListクラスを1つ指定 |
public int sample(List<String> a, String s) {} | Stringを要素に持つListクラスと
Stringクラスを指定 |
引数の指定には別途、可変長引数と言う機能があるのですがそちらは別途説明します。
(可変長引数を使わなくてもプログラムは記述できるのでここでは省略します)
return文
戻り値を返す命令文であり、戻り値を指定する場合は必須です。
return命令が実行された場合はそこで処理を終了し、呼び出し元メソッドに処理が戻ります。
return文の基本
public class Sample { public String test(int a, int b) { int ans = a + b; if (ans >= 0) { return "0以上です"; } else { return "0未満です"; } } }
public class Execute { public static void main(String[] args) { Sample sample = new Sample(); //インスタンス生成 System.out.println(sample.test(1, 2)); //「0以上です」が表示 System.out.println(sample.test(-3, 2)); //「0未満です」が表示 } }
戻り値を指定しない場合のreturn文
戻り値にvoidを指定する場合にもreturn文を記述することができます。
用途としてはそこで処理を終了させたい場合に利用します。
public class Sample { public void voidTest(String s1, String s2) { if (s1 == null || s2 == null) { //引数のどちらかがnullの場合は処理を終了 System.out.println("引数にnullが含まれます"); return; } //引数がnullでは無い場合は下記を実行 System.out.println(s1 + S2); }
public class Execute { public static void main(String[] args) { Sample sample = new Sample(); //インスタンス生成 sample.voidTest("hello", "world"); //「helloworld」が表示 sample.voidTest("hello", null); //「引数にnullが含まれます」が表示 } }