Java入門⑦ メソッド入門

Java入門 Java入門

プログラムを書いていると、「何度も同じ処理を書くのが面倒…」「処理をひとまとめにしたい」と感じることがあります。
そんなときに使うのが メソッド(method) です。

メソッドは、処理を名前付きでまとめる仕組み だと思えばOKです。

この記事では、メソッドの基本から、引数・戻り値・オーバーロードまで初心者向けにわかりやすく解説します。

学べること

  • メソッドとは何か
  • メソッドの書き方(定義と呼び出し)
  • 引数と戻り値の意味
  • 戻り値なしの void メソッド
  • オーバーロードの考え方

メソッドとは?

メソッドとは、処理を1つにまとめて再利用できるようにしたものです。

例えるなら「料理レシピ」みたいなものです。

メソッドの基本構文(定義)

戻り値の型 メソッド名(引数) {
    実行する処理;
}

戻り値の型は、後に紹介する戻り値(return値)のデータ型を決める部分です。

例:挨拶を表示するメソッド

public static void hello() {
    System.out.println("こんにちは!");
}

呼び出し

hello(); // メソッドを実行

これを見た瞬間
「さぁなんだなんだ?」と思った人も多いはず。

ちなみに「呼び出し」は、今はメソッドを使うことという風に理解しておいてください。

そこで、ひとつずつ丁寧に説明します!

引数(ひきすう)とは?

引数とは、メソッドに渡す情報のことです。

例:名前を受け取って挨拶するメソッド

public static void greet(String name) {
    System.out.println("こんにちは、" + name + "さん!");
}

呼び出し

greet("太郎");  // こんにちは、太郎さん!
greet("花子");  // こんにちは、花子さん!

→ 値を変えるだけで使い回しできるのがメリット!

戻り値とは?

戻り値(return値) は、メソッドが処理した結果を返すための仕組みです。

例:2つの数を足して返すメソッド

public static int add(int a, int b) {
    return a + b;
}

呼び出し

int result = add(5, 3);
System.out.println(result);  // 8

戻り値がないメソッド → void

「結果を返さないメソッド」は void と書きます。

public static void showMessage() {
    System.out.println("メッセージを表示します!");
}

「メッセージを表示しているんだから、結果返してるじゃん?」
と思う人もいるかもしれません。

実はこれ、「showMessage() メソッドが結果を返している」わけではありません。

System.out.println() もメソッド!

つまり、画面に文字を表示しているのは
showMessage() の中に書かれている 別のメソッド の働きです。

  • showMessage() → 何も返さない(void)
  • System.out.println() → 表示するための処理を行うメソッド

showMessage() はただ「画面に文字を表示する処理をまとめた箱」
その箱の中で println() が仕事している だけ、というイメージです。

オーバーロードとは?

メソッドは 同じ名前 でも、引数が違えば複数作れる というルールがあります。

これを オーバーロード と呼びます。

例:同じ「add」で別バージョンを作る

public static int add(int a, int b) {
    return a + b;
}

public static double add(double a, double b) {
    return a + b;
}

public static int add(int a, int b, int c) {
    return a + b + c;
}

呼び出し側

add(3, 5);        // int版
add(2.5, 3.0);    // double版
add(1, 2, 3);     // 引数3つ版

→ 引数の個数・型が異なればOK!

実践例:平均値を出すメソッド

配列の平均を求めるメソッドを作ってみます。

public static double average(int[] scores) {
    int sum = 0;

    for (int s : scores) {
        sum += s;
    }

    return (double) sum / scores.length;
}

public static void main(String[] args) {
    int[] data = {80, 90, 100, 70};

    double avg = average(data);

    System.out.println("平均点:" + avg);
}

コピペでは動かない可能性がある理由

初心者がよくつまずくポイントですが、
このコードをそのまま既存の練習ファイルに貼り付けても動かない場合があります。

その理由はズバリ…

すでに main メソッドがあるから

Javaでは、実行するときに最初に呼ばれるメソッドは

public static void main(String[] args)

ただ1つです。

もしファイル内に main が複数あったり、
クラスの外に平均計算メソッドを書いてしまったりすると
エラーが出るか、実行されません。

正しい貼り付け位置の例

(良い例)1つのクラスにまとめる

public class Main {
    // 平均を計算するメソッド
    public static double average(int[] scores) {
        int sum = 0;
        for (int s : scores) {
            sum += s;
        }
        return (double) sum / scores.length;
    }

    // 実行される main メソッド
    public static void main(String[] args) {
        int[] data = {80, 90, 100, 70};
        double avg = average(data);
        System.out.println("平均点:" + avg);
    }
}
public class Main { ... }

というクラスの中に
average() も main() も入れてあげれば確実に動きます。

よくある間違い

  • average() をクラスの外に書いてしまう
  • main() が2つある
  • クラス名とファイル名が一致していない(Javaでは必須)

まとめ

用語説明
メソッドとは処理をまとめた再利用可能な部品
引数メソッドに渡す値
戻り値メソッドが返す結果
void戻り値なしのメソッド
オーバーロード同名で複数メソッドを持てる仕組み

メソッドを使えるようになると、
コードが整理され、再利用もしやすくなります!

ではでは!次回!:Java入門⑧ クラスとオブジェクト

コメント

タイトルとURLをコピーしました