0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Java入門】第7章 メソッド

0
Last updated at Posted at 2026-10-31

これまでは、すべての処理を main メソッドの中に書いてきました。処理が長くなると読みにくくなり、同じ処理を何度も書くことにもなります。処理に名前を付けてまとめたものが メソッド です。この章では、メソッドの作り方と呼び出し方、引数と戻り値、そしてメソッドの説明を書く Javadoc コメントを学びます。

この章で学ぶこと

  • メソッドの定義と呼び出し
  • 引数で値を渡す、戻り値で結果を受け取る(return・void)
  • static なメソッドと、クラス名.メソッド名() の呼び方
  • 変数が使える範囲(スコープ)
  • Javadoc コメント(@param・@return)

7.1 この章で作るもの

この章では、ch07 パッケージに2つのクラスを作ります。章の最後には、Method を実行するとコンソールに次のように表示されるようになります。

コンソール
---------------
雷禅 海皇(26歳)
院照 心愛(27歳)
林檎 星飛(24歳)
---------------
年齢の合計:77
27 は正しい年齢です
100 は正しくない年齢です
ファイル 作業 内容
ch07/Method.java 新規 メソッドを定義して呼び出す練習用のクラス(main あり)
ch07/AgeChecker.java 新規 年齢を調べるメソッドだけを持つクラス(main なし)

7.2 メソッドを作って呼び出す

  1. src を右クリックし、新規 → パッケージ で ch07 パッケージを作ります。

  2. ch07 パッケージを右クリックし、新規 → クラス で、名前 Method、「public static void main(String[] args)」に チェックを入れて クラスを作ります。

  3. // TODO の行を消し、緑の行を入力します。main メソッドの 外(main の } の後ろ、クラスの } の前)に、新しいメソッド printLine を書きます。

    ch07/Method.java
    package ch07;
    
    public class Method {
    
        public static void main(String[] args) {
            printLine();
            System.out.println("雷禅 海皇(26歳)");
            printLine();
        }
    
        static void printLine() {
            System.out.println("---------------");
        }
    
    }
    
  4. 保存して実行します。

    コンソール
    ---------------
    雷禅 海皇(26歳)
    ---------------
    

printLine が、自分で作ったメソッドです。main メソッドから printLine(); と書いて 呼び出す と、printLine の { } の中の処理が行われ、終わると呼び出した場所の次の文に戻ります。

main メソッドの printLine(); から printLine メソッドに処理が移り、中の println を実行して、呼び出した場所の次の文に戻る
図7-1 メソッドの呼び出しと戻り

メソッドの形

書き方
static 戻り値の型 メソッド名(引数) {
    処理
}
部分 printLine の例 意味
static static main メソッドから直接呼び出せるメソッドにする印。この章では、作るメソッドにすべて付ける(static の無いメソッドは第8章、意味は第9章)
戻り値の型 void メソッドが返す結果の型。何も返さないときは void と書く(7.4)
メソッド名 printLine 変数名と同じく、小文字で始めるキャメルケース。「何をするか」が分かる動詞で始める
引数 (なし) メソッドに渡す値。無いときも ( ) は書く(7.3)

メソッドは、クラスの { } の中に、main メソッドと並べて書きます。main メソッドの中には書けません。クラスの中でのメソッドの順番は自由で、main の後ろに書いても main から呼べます。

7.3 引数

「雷禅 海皇(26歳)」の表示を、名前と年齢を変えて3回行いたいとします。名前と年齢をメソッドに 渡せる ようにしたものが 引数(ひきすう)です。

  1. Method.java を、緑の行のように書き換え・書き足します。

    ch07/Method.java
    package ch07;
    
    public class Method {
    
        public static void main(String[] args) {
            printLine();
            printEmployee("雷禅 海皇", 26);
            printEmployee("院照 心愛", 27);
            printEmployee("林檎 星飛", 24);
            printLine();
        }
    
        static void printLine() {
            System.out.println("---------------");
        }
    
        static void printEmployee(String name, int age) {
            System.out.println(name + "(" + age + "歳)");
        }
    
    }
    
  2. 保存して実行します。

    コンソール
    ---------------
    雷禅 海皇(26歳)
    院照 心愛(27歳)
    林檎 星飛(24歳)
    ---------------
    

printEmployee(String name, int age) の ( ) の中が引数です。変数の宣言と同じように 型 名前 の形で書き、2つ以上あるときは , で区切ります。呼び出す側は、printEmployee("雷禅 海皇", 26) のように、同じ順番・同じ型で値を渡します。渡した値は、メソッドの中で name・age という変数として使えます。

【ご注意】引数の数と型は、定義と呼び出しで合わせる

printEmployee("雷禅 海皇") のように数が足りなかったり、printEmployee(26, "雷禅 海皇") のように順番が違ったりすると、「型 Method のメソッド printEmployee(String, int) は引数 (String) に適用できません」のようなエラーになります。

7.4 戻り値

メソッドは、処理の結果を呼び出した側に 返す ことができます。返す値を 戻り値 といい、return で返します。戻り値があるメソッドは、void の代わりに戻り値の型を書きます。

  1. Method.java に、年齢の合計を返すメソッド sum を書き足し、main から呼びます。

    ch07/Method.java
    package ch07;
    
    public class Method {
    
        public static void main(String[] args) {
            printLine();
            printEmployee("雷禅 海皇", 26);
            printEmployee("院照 心愛", 27);
            printEmployee("林檎 星飛", 24);
            printLine();
            int[] ages = {26, 27, 24};
            int total = sum(ages);
            System.out.println("年齢の合計:" + total);
        }
    
        static void printLine() {
            System.out.println("---------------");
        }
    
        static void printEmployee(String name, int age) {
            System.out.println(name + "(" + age + "歳)");
        }
    
        static int sum(int[] ages) {
            int total = 0;
            for (int a : ages) {
                total += a;
            }
            return total;
        }
    
    }
    
  2. 保存して実行します。最後に 年齢の合計:77 と表示されます。

    コンソール
    ---------------
    雷禅 海皇(26歳)
    院照 心愛(27歳)
    林檎 星飛(24歳)
    ---------------
    年齢の合計:77
    
コード 意味
static int sum(int[] ages) int の配列を受け取り、int を返すメソッド
return total; total の値を返して、メソッドを終える。return の後ろの文は実行されない
int total = sum(ages); sum を呼び出し、返ってきた値を total に入れる。呼び出しの式は、戻り値の型の値として使える

戻り値の型を int と書いたら、必ず int の値を return します。return を書き忘れると、「このメソッドは型 int の結果を戻す必要があります」というエラーになります。void のメソッドには return を書きません(途中で終えたいときだけ、値を付けずに return; と書けます)。

【知識メモ】これまで使ってきたメソッド

System.out.println(…) は、引数を受け取って表示する void のメソッドです。第5章の name.equals(…) は boolean を返し、name.length() は int を返すメソッドでした。自分で作るメソッドも、これらと同じ仕組みです。

7.5 別のクラスのメソッドを呼ぶ

メソッドは、別のクラスに書いて呼び出すこともできます。「年齢が正しい範囲か」を調べるメソッドを、AgeChecker という別のクラスに作ってみましょう。このクラスには main メソッドを付けません。

  1. ch07 パッケージを右クリックし、新規 → クラス で、名前 AgeChecker と入力します。今回は「public static void main(String[] args)」の チェックを入れずに、「完了」をクリックします。

  2. 開いたエディターに、緑の行を入力します。

    ch07/AgeChecker.java
    package ch07;
    
    public class AgeChecker {
    
        public static boolean isValid(int age) {
            return age >= 15 && age <= 99;
        }
    
    }
    

    return age >= 15 && age <= 99; は、条件式の結果(true か false)をそのまま返しています。

  3. 保存します。

  4. Method.java の main メソッドの最後に、緑の行を書き足します。

    ch07/Method.java(main メソッドの最後)
            int[] ages = {26, 27, 24};
            int total = sum(ages);
            System.out.println("年齢の合計:" + total);
    
            check(27);
            check(100);
        }
    
  5. Method.java の最後(sum メソッドの後ろ)に、check メソッドを書き足します。

    ch07/Method.java(クラスの最後)
        static int sum(int[] ages) {
            int total = 0;
            for (int a : ages) {
                total += a;
            }
            return total;
        }
    
        static void check(int age) {
            if (AgeChecker.isValid(age)) {
                System.out.println(age + " は正しい年齢です");
            } else {
                System.out.println(age + " は正しくない年齢です");
            }
        }
    
    }
    
  6. 保存して、Method.java を実行します(AgeChecker.java には main が無いので実行できません)。

    コンソール(後半)
    年齢の合計:77
    27 は正しい年齢です
    100 は正しくない年齢です
    

別のクラスの static なメソッドは、クラス名.メソッド名(引数) の形で呼び出します。AgeChecker.isValid(age) がそれです。同じクラスの中のメソッドは、sum(ages) のようにクラス名を付けずに呼べます。

呼ばれる側のメソッドには public を付けています。public は「別のクラスから使ってよい」という印です(同じパッケージの中なら無くても呼べますが、この教材では付けます。第9章で詳しく学びます)。

【知識メモ】Java が用意しているメソッドも同じ形

Java には、最初から多くのクラスとメソッドが用意されています。たとえば、文字列を数に変える Integer.parseInt("26")(第11章)は、Integer クラスの static なメソッド parseInt を呼び出しています。Spring入門の SpringApplication.run(…) も同じ形です。クラス名.メソッド名(…) と書いてあったら、「そのクラスの static なメソッドを呼んでいる」と読んでください。

7.6 変数が使える範囲

メソッドの中で宣言した変数(引数も含む)は、そのメソッドの中でだけ使えます。sum メソッドの total と、main メソッドの total は、名前が同じでも別の変数です。変数が使える範囲を スコープ といいます。

  • メソッドの中で宣言した変数は、そのメソッドの { } の中でだけ使える
  • if 文や for 文のブロックの中で宣言した変数は、そのブロックの中でだけ使える(第6章の for 文の i)
  • 別のメソッドに値を渡したいときは、引数で渡す。結果を受け取りたいときは、戻り値で受け取る

どのメソッドからも使える変数(フィールド)は、第8章で学びます。

7.7 Javadoc コメント

メソッドの上には、/** … */ の形の Javadoc コメント で、そのメソッドの説明を書きます(第3章 3.6)。引数は @param 引数名 説明、戻り値は @return 説明 で書きます。

  1. AgeChecker.java の isValid メソッドの上に、緑の行を書き足します。

    ch07/AgeChecker.java
    package ch07;
    
    /** 社員の年齢が入力できる範囲かを調べる */
    public class AgeChecker {
    
        /** 登録や変更の前に、年齢が 15 以上 99 以下かを確かめる
         * @param age 調べる年齢
         * @return 範囲内なら true */
        public static boolean isValid(int age) {
            return age >= 15 && age <= 99;
        }
    
    }
    
  2. 保存します。コメントなので、動きは変わりません。

  3. Method.java で、AgeChecker.isValid の上にマウスを合わせてみてください。書いた Javadoc コメントが、説明として表示されます。

Javadoc コメントは、Eclipse が説明の表示に使うほか、クラスの一覧表(API ドキュメント)を作るときにも使われます。Spring入門では、Controller のメソッドに次のような Javadoc コメントを書きます。

Spring入門の例
/** 社員一覧画面を表示
 * 社員IDの順に社員を取り出して表示
 * @param model 表示する社員情報
 * @return 社員一覧画面 */

【便利な使い方】Javadoc の書き方

  • 1行目に、「どんな時に」「何のために」行う処理かを書く。何をしているかはコードを見れば分かるので、短くてよい
  • @param には、その引数に「何が」入るかを書く。@return には、「何を」返すかを書く
  • メソッドの上で /** と入力して Enter キーを押すと、Eclipse が @param と @return の行を自動で作ってくれる。この教材では、行数を抑えるために、1行目を /** の後ろに続けて書き、最後の行の末尾で */ を閉じている

7.8 うまくいかないときは

症状 考えられる原因と対処
「メソッド printLine() は型 Method で未定義です」 メソッド名の打ち間違いか、メソッドをクラスの外に書いています。メソッドはクラスの { } の中、main メソッドの外に書きます。
「型 Method のメソッド printEmployee(String, int) は引数 (…) に適用できません」 呼び出すときの引数の数・順番・型が、定義と合っていません。定義の ( ) の中と見比べてください。
「このメソッドは型 int の結果を戻す必要があります」 戻り値の型を書いたのに return がありません。return 値; を書いてください。
「void メソッドは値を戻すことができません」 void のメソッドで return 値; と書いています。値を返すなら、戻り値の型を書いてください。
「total を変数に解決できません」 別のメソッドで宣言した変数を使っています。変数はメソッドの中でだけ使えます。引数か戻り値で受け渡してください。
AgeChecker.java を実行しようとすると「選択にはメイン型が含まれていません」と表示される AgeChecker には main が無いので、実行できません。Method.java を実行してください。

ほかのコンパイルエラーは、付録A「よくあるコンパイルエラー」 も参考にしてください。

7.9 まとめと確認問題

まとめ

  • メソッド は、処理に名前を付けてまとめたもの。static 戻り値の型 メソッド名(引数) { } の形で、クラスの中に main と並べて書く
  • 引数 は、呼び出すときに渡す値。定義では 型 名前、呼び出しでは同じ順番・型で値を書く
  • 戻り値 は、return 値; で返す結果。何も返さないメソッドは void
  • 別のクラスの static なメソッドは クラス名.メソッド名(引数) で呼ぶ。別のクラスから呼ぶメソッドには public を付ける
  • メソッドの中で宣言した変数は、そのメソッドの中でだけ使える(スコープ)
  • メソッドの説明は Javadoc コメント(/** */)に、@param・@return で書く。「何のために」を書く

この章で使った書き方は、付録B「文法早見表」の「メソッドとクラス」 にまとめています。

確認問題

問1 2つの int の値を受け取って、大きいほうを返すメソッド max を書いてください。

解答を見る

static int max(int a, int b) { if (a > b) { return a; } else { return b; } }

問2 static void printLine() の void は、何を表していますか。

解答を見る

戻り値が無い(値を返さない)メソッドであることを表しています。

問3 AgeChecker クラスの static なメソッド isValid を、別のクラスから呼び出す書き方を答えてください。引数は 27 とします。

解答を見る

AgeChecker.isValid(27)

問4 次のコードはエラーになります。理由を答えてください。
static int sum(int[] ages) { int total = 0; for (int a : ages) { total += a; } }

解答を見る

戻り値の型が int なのに、return がありません。最後に return total; を書きます。

問5 Javadoc コメントで、引数と戻り値の説明を書くときに使う印は何ですか。

解答を見る

引数は @param 引数名 説明、戻り値は @return 説明 です。


前へ

第6章 繰り返しと配列

次へ

第8章 クラスとオブジェクト

目次へ

【Java入門】目次

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?