Javaを勉強し始めたばかりの方にとって、「メソッドって何だろう?」「どうやって書けばいいの?」「呼び出すってどういうこと?」という疑問はつきものです。
この記事では、そんな疑問を1つずつ解消しながら、Javaのメソッド(関数)に関する基本的な知識をやさしく丁寧に紹介していきます。
この記事で学べること
この記事を読むことで、次のようなことが理解できるようになります。
- メソッドとは何か、その役割とメリット
- Javaにおけるメソッドの基本的な書き方と構文
- よく使われる4つのパターンと実例
- voidとreturnの意味と使い方
- メソッドの呼び出し方とmainメソッドとの関係
- staticやインスタンス化といった考え方の基礎
初心者の方でも、読み終わる頃には「メソッドって意外とシンプルかも」と感じてもらえるはずです。
メソッドってなに?その役割と意味
Javaでいうメソッドとは、ある処理のまとまりに名前をつけて定義したものです。
たとえば「こんにちは!私は〇〇です。」と画面に表示する処理や、2つの数字を足す処理など。
これらを毎回書き直すのではなく、ひとまとめにしておけば、必要なときに呼び出して再利用できるようになります。
どうしてメソッドを使うの?
Javaでは、メソッドを使うことでこんなメリットがあります。
- 同じ処理を何度も書かなくてよくなる(再利用)
- コードの構造が整理されて読みやすくなる
- 一部を修正したいとき、1か所直すだけでOK(保守性が高まる)
プログラムが複雑になるほど、こういった「整理と再利用のしやすさ」がとても大切になってきます。
だからこそ、メソッドの使い方はJavaを学ぶうえで欠かせない基礎なのです。
メソッドの基本構文と注意点
それでは、Javaでメソッドを書くときの基本的な構文を見ていきましょう。
基本のかたち
Javaのメソッドは次のように書きます。
アクセス修飾子 戻り値の型 メソッド名(引数の型 引数名) {
// 処理内容
return 戻り値;
}
たとえば、2つの整数を足し算してその結果を返すメソッドはこうなります。
public int add(int a, int b) {
return a + b;
}
この書き方のポイントは以下のとおりです。
public
:このメソッドが他の場所からも呼び出せることを表しますint
:戻ってくる値の型(この場合は整数)add
:メソッドの名前。処理の内容が想像しやすい名前にすると良いです(int a, int b)
:引数。メソッドに渡す値を定義しますreturn
:計算した結果を呼び出し元に返します
publicのようなアクセス修飾子についてはこちらの記事で解説しています。
よくあるミス:メソッドの中にメソッドは書けない
初心者がよくやってしまう間違いに、「メソッドの中に別のメソッドを書いてしまう」というものがあります。
public void outer() {
public void inner() {
System.out.println("これはエラーになります");
}
}
このような書き方はJavaではできません。
すべてのメソッドは、クラスの中に1段階だけ書く必要があります。
よくある4つのメソッドパターン
Javaのメソッドは、「引数があるか」「戻り値があるか」の2つの要素によって、次の4つのパターンに分けることができます。
パターン | 引数 | 戻り値 | 使用例 |
---|---|---|---|
① | なし | なし | 挨拶を表示する |
② | あり | なし | 名前を使って挨拶する |
③ | あり | あり | 数字を足して返す |
④ | なし | あり | ランダムな数を返す |
それぞれ、どういうときに使うのか、実際のコードで見ていきましょう。
① 引数なし・戻り値なし
public void greet() {
System.out.println("こんにちは!");
}
呼び出し方はこのように書きます。
mainについては後で説明するのでここでは書き方だけ確認してください。
Main main = new Main();
main.greet();
外部から値を受け取らず、処理結果も返さない、もっともシンプルなメソッドです。
② 引数あり・戻り値なし
public void greetWithName(String name) {
System.out.println("こんにちは、" + name + "さん!");
}
呼び出し方はこちらです。
Main main = new Main();
main.greetWithName("まさき");
値(ここでは名前)を受け取って表示するだけで、結果は返しません。
このメソッド間で渡せる変数が「引数」といいます。
引数はいくつでも渡すことができます。
③ 引数あり・戻り値あり
public int add(int a, int b) {
return a + b;
}
呼び出し方はこちらです。
Main main = new Main();
int result = main.add(4, 6);
System.out.println(result); //10が表示される
受け取った値を使って計算し、その結果を返すメソッドです。
こちらは引数を渡して、その結果を戻り値として受け取る一番書くことが多くなるメソッドです。
④ 引数なし・戻り値あり
public int getRandomNumber() {
return (int)(Math.random() * 10);
}
呼び出し方はこちらです。
Main main = new Main();
int num = main.getRandomNumber();
自分のメソッド内で処理をして、その結果だけを返すパターンです。
この場合はランダムな数字を取得するメソッドになっています。
voidとは?
引数がない場合にvoidという書き方が出てきました。void
は、「このメソッドは値を返さない」ことを表すキーワードです。
たとえば、表示するだけのメソッドなどは、結果を返す必要がないため、void
を使います。
public void sayHello() {
System.out.println("こんにちは!");
}
このようなメソッドは「処理をやるだけやって、何も返さない」と覚えておくとイメージしやすいです。
returnとは?
戻り値がある場合、最後にreturnがあったと思います。return
は、メソッドから呼び出し元に値を返すためのキーワードです。
たとえば、次のようなメソッドでは、計算した結果(aとbをかけた値)を返しています。
public int multiply(int a, int b) {
return a * b;
}
このように、return
を使うことで、メソッドの外に値を渡すことができます。
呼び出し元では、それを変数に入れて利用できます。
メソッド名の付け方のコツ
メソッド名は好きな単語を指定できますが、実際の現場ではメソッド名を決めるルールがあることが多いです。
メソッドには、その中で何をしているのかがわかる名前をつけるのがポイントです。
良いメソッド名の例
printMessage()
:メッセージを表示するgetUserName()
:ユーザー名を取得するcalculateTotal()
:合計を計算する
命名のコツ
- 動詞から始める(get, print, calculateなど)
- 単語をつなぐときは、2単語目以降の頭文字を大文字にする(これをキャメルケースといいます)
たとえば、「ユーザーの名前を取得する」処理なら、getUserName()
とつけると意味が伝わりやすくなります。
メソッドの呼び出し方
4パターンのところではメソッドの宣言と合わせて呼び方もご紹介しました。
メソッドは書いただけでは実行されません。
呼び出してあげることで、はじめて処理が動きます。
Main main = new Main();
int result = main.add(3, 5);
System.out.println("結果:" + result);
このように、メソッド名(引数)
の形で呼び出すのが基本です。
mainメソッドと自作メソッドの違い
Javaを始めたときこのようなおまじないを書いたことがあると思います。
Javaプログラムを実行したときは、main
メソッドから処理がスタートします。
public static void main(String[] args) {
// プログラムはここから始まる
}
このmain
メソッドの中で、自分が作ったメソッドを呼び出して使います。
つまり、main
は入り口、自作メソッドはその中で使う部品のようなものです。
staticとインスタンス化の基礎知識
Javaでは、メソッドの定義にstatic
をつけるかどうかで、呼び出し方が変わります。
staticメソッドはすぐに呼び出せる
戻り値の型の前にstaticと付いているメソッドがあります。
public static int add(int a, int b) {
return a + b;
}
この場合、main
メソッドの中から直接呼び出すことができます。
int result = add(3, 5);
System.out.println("結果:" + result);
staticではないメソッドはインスタンス化が必要
今回はstaticがついてないメソッドを例に挙げて紹介してきました。
public int add(int a, int b) {
return a + b;
}
このようなメソッドは、次のようにクラスをインスタンス化して使います。
呼び出し方はインスタンス名.メソッド名()となります。
Main main = new Main();
int result = main.add(3, 5);
ここで出てくる「インスタンス化」とは、「クラスという設計図から実物(オブジェクト)を作ること」です。
インスタンスを作ることで、非staticメソッドを呼び出せるようになります。
まとめ
ここまで、Javaのメソッドについて基本から実践までをひと通り学んできました。
- メソッドは、処理のまとまりに名前をつけて再利用できる仕組み
- Javaには4つの基本的なメソッドパターンがある
void
は値を返さないメソッド、return
は値を返すメソッドで使う- メソッドは呼び出すことで実行される
static
をつければ直接呼べるが、通常はインスタンス化して呼び出す
Javaにおけるメソッドは、プログラミングの中でもっとも重要な要素のひとつです。
最初は形式に慣れるのが大変かもしれませんが、実際に何度も書いて試すうちに自然と身についていきます。
自分の書いたコードが動く楽しさを感じながら、少しずつ前に進んでいきましょう。