第5回では、配列を使って複数のデータをまとめて扱う方法を学びました。 今回は、「処理をまとめて、何度も再利用できる仕組み」 ── メソッド(Method) を学びます。
メソッドは、他のプログラミング言語では 「関数(Function)」 と呼ばれることもある、極めて重要な機能です。 これを覚えると、コードの整理力が一気に上がり、「同じことを何度も書く」苦痛から解放されます。
この記事のゴール
「メソッドとは何か」「なぜ便利なのか」「引数と戻り値の正しい書き方」を、自分で書ける状態になることです。
そもそもメソッドとは?(現実世界のたとえで理解する)
メソッドとは、「ひとまとまりの処理に名前を付けて、後で呼び出せるようにしたもの」 です。
💡 イメージ: メソッドは 「自動販売機」 のようなもの。 ボタンを押す(=メソッドを呼ぶ)と、裏で複雑な処理が行われ、結果(=戻り値)が返ってくる。中身がどう動いているか、利用者は知らなくても使えるのが大きな利点です。
たとえば、「2 つの数値を足し算する」 という処理を 10 か所で使うとします。
❌ メソッドを使わない場合:
int a = 5;
int b = 3;
int result1 = a + b; // 1回目
int x = 10;
int y = 20;
int result2 = x + y; // 2回目
// ... これを 10 回繰り返す...
⭕ メソッドを使う場合:
int result1 = add(5, 3); // 1回目
int result2 = add(10, 20); // 2回目
// ...
add という「足し算をするメソッド」を 1 つ作っておけば、何度でも呼び出して使えるのです。
メソッドの基本形
メソッドの基本構文はこの形です。
戻り値の型 メソッド名(引数の型 引数名, ...) {
// 処理
return 戻り値;
}
ちょっと用語が多いので、1 つずつ解説していきましょう。
- 戻り値の型: メソッドが「処理結果として返すデータの型」(int / String / void など)
- メソッド名: 自分で決める名前(変数名と同じルール。動詞+名詞が一般的)
- 引数(ひきすう): メソッドに渡すデータ(=自販機にお金を入れる感覚)
- 戻り値(もどりち): メソッドが返すデータ(=自販機から出てくる商品)
- return: 「結果を返す」キーワード
はじめてのメソッドを書いてみる
実際に、足し算メソッド add を作ってみましょう。
public class MethodDemo {
// ──────────────────────────────────────────────────────────────
// add メソッド(自作の足し算メソッド)
// 引数: int a, int b ← 呼び出し時に渡される 2 つの整数
// 戻り値: int ← 結果として整数を返す
// ──────────────────────────────────────────────────────────────
public static int add(int a, int b) {
int sum = a + b; // a と b を足して sum に代入
return sum; // sum を呼び出し元に返す
}
public static void main(String[] args) {
// add(5, 3) を呼ぶと、メソッド内で a=5, b=3 が処理され 8 が返る
int result = add(5, 3); // result には 8 が入る
System.out.println("結果: " + result); // → 結果: 8
}
}
1 行ずつ解説
public static int add(int a, int b) {
public static: 今はおまじないと理解して OK(クラスを学ぶ第 7 回で深掘り)int(戻り値の型): このメソッドは 整数(int) を返すadd(メソッド名): 自分で決めた名前(int a, int b): 2 つの int 型引数を受け取る
int sum = a + b;
return sum;
- 受け取った
aとbを足してsumに代入 return sum;で結果を呼び出し元に返す
int result = add(5, 3);
add(5, 3)を呼び出すと、メソッド内でa = 5、b = 3として処理され、8が返ってくる- 返ってきた値が変数
resultに代入される
戻り値が「無い」メソッド: void
「処理だけして、結果を返さないメソッド」もよくあります。
そのときは、戻り値の型を void(ボイド・空っぽの意味) と書きます。
// 戻り値の型を void(空っぽ)にすると、値を返さないメソッドになる
public static void greet(String name) {
System.out.println("こんにちは、" + name + "さん!");
// void なので return は省略可能(書くなら「return;」で値なし)
}
public static void main(String[] args) {
greet("佐藤"); // メソッド呼び出し(戻り値を受け取らない) → こんにちは、佐藤さん!
greet("田中"); // → こんにちは、田中さん!
}
💡
voidメソッドの中でreturn;(値なしの return)を書くと、その時点でメソッドを抜けられます。条件分岐と組み合わせると便利です。
メソッドのオーバーロード(同じ名前で複数定義できる)
Java では、同じ名前のメソッドでも、引数の型や数が違えば複数定義できます。これを オーバーロード(Overloading) と呼びます。
// 整数の足し算
public static int add(int a, int b) {
return a + b;
}
// 小数の足し算(同じ名前 add でも OK!)
public static double add(double a, double b) {
return a + b;
}
// 3 つの整数の足し算
public static int add(int a, int b, int c) {
return a + b + c;
}
public static void main(String[] args) {
System.out.println(add(3, 5)); // 8(int 版が呼ばれる)
System.out.println(add(3.5, 5.5)); // 9.0(double 版が呼ばれる)
System.out.println(add(1, 2, 3)); // 6(3 引数版が呼ばれる)
}
呼び出し時に 引数の型・数で Java が自動的にどのメソッドを使うか判別してくれます。
ハマりがちなエラー TOP3
エラー① return 文を書き忘れる
public static int add(int a, int b) {
int sum = a + b;
// ❌ return 文がない!
}
症状: error: missing return statement
対処: 戻り値の型を指定したメソッドでは、必ず return 文を書く(void 以外)。
エラー② 引数の型を書き忘れる
public static int add(a, b) { // ❌ int がない
return a + b;
}
対処: 引数は 型 変数名 の順で書く。型は省略不可。
エラー③ メソッドの外で変数を使おうとする
public static void calc() {
int x = 10; // メソッド内の変数
}
public static void main(String[] args) {
System.out.println(x); // ❌ x はメソッドの外では見えない!
}
原因: メソッド内で宣言した変数(ローカル変数)は、そのメソッドの中でしか有効です。これを スコープ と呼びます。 対処: メソッド間で値を共有したいなら、戻り値で受け渡すか、クラスのフィールドにする(第 7 回で解説)。
main メソッドの正体
ここまで何度も登場した main メソッド。実はこれもただのメソッドです。
public static void main(String[] args) {
// ...
}
public static void: 第 7 回で詳しく解説しますmain: Java が最初に呼び出すメソッド名(固定)String[] args: コマンドラインから渡される引数の配列
つまり Java は 「main メソッドからプログラムを始めなさい」 というルールで動いています。
編集部のアドバイス
「ちょっと長くなってきたな」と思ったら、処理をメソッドに分けるサイン。1 メソッド = 1 つの仕事を意識すると、コードが格段に読みやすくなります。
練習問題
以下のメソッドを作ってみましょう。
整数
nを受け取り、1〜n の合計を返すメソッドsumUpTo(int n)を作成し、sumUpTo(10)を実行して結果を表示してください。
解答例
public class SumDemo {
// 1 〜 n の合計を計算して返すメソッド
// 引数: int n (合計の上限)
// 戻り値: int (計算結果)
public static int sumUpTo(int n) {
int total = 0; // 合計を 0 で初期化
for (int i = 1; i <= n; i++) { // i を 1 から n まで動かす
total += i; // total に i を加算
}
return total; // 計算結果を呼び出し元に返す
}
public static void main(String[] args) {
int result = sumUpTo(10); // sumUpTo(10) を呼び出し
System.out.println("1〜10 の合計: " + result); // → 55
}
}
まとめ
第 6 回では、以下を学びました。
- ✅ メソッドは「処理に名前を付けて再利用できる仕組み」
- ✅ 基本形:
戻り値の型 メソッド名(引数) { ...; return ...; } - ✅
voidは「戻り値なし」の意味 - ✅ オーバーロード で同じ名前のメソッドを複数定義可
- ✅ メソッド内の変数(ローカル変数)は、そのスコープ内でしか有効
- ✅
mainメソッドは Java プログラムの入口
次回は、いよいよ 「クラスとオブジェクト」 という Java の核となる概念を学びます。 ここから、「オブジェクト指向プログラミング」 の世界が始まります!お楽しみに。