Javaのメソッドの書き方|引数・戻り値4パターンを実例で解説

Mirai

Javaのメソッドって、どうやって書けばいいんだろう…?引数とか戻り値とか、いまいちピンとこなくて。

Zetto

メソッドは処理をひとまとめにして名前をつける仕組みだね。引数・戻り値の4パターンを理解すれば、Javaのコードがぐっと書きやすくなるよ!

この記事では、Javaのメソッドの書き方を基礎から実例つきで解説します。

Zettoのライタープロフィール

本記事の専門性
現役エンジニアのZettoです。エンジニア向けブログを運営しており、Java Silver・Java Goldを保有しています。実務でJavaを使ったWebアプリ開発経験があり、現在もフリーランスエンジニアとして活動しています。

メソッドの書き方がわからないまま進むと、同じ処理を何度もコピペするコードになりがちです。修正のたびに何か所も直す必要が出て、バグの原因になります。

この記事を読めば、Javaのメソッドの基本構文・引数と戻り値の4パターン・現場で使える設計の考え方がまとめてわかります。

ぜひ参考にしてみてください。

目次

Javaのメソッドとは何か・なぜ使うのか

Javaメソッドとは

この章では、メソッドの役割・使わない場合の問題点・基本構文を解説します。

  • 処理をまとめて「再利用」できる仕組み
  • メソッドを使わないと何が起きるか
  • メソッドの基本構文と各パーツの役割

順番に見ていきましょう。

処理をまとめて「再利用」できる仕組み

メソッドとは、処理をひとまとめにして名前をつけたブロックのことです。

一度定義すれば何度でも呼び出せます。同じ処理を何度もコードに書く必要がなくなるので、コードがすっきりします。

たとえば「2つの数を足す」処理があるとします。これをメソッドとして定義しておけば、計算が必要なたびにそのメソッドを呼び出すだけです。

処理の中身を毎回書く必要はありません。

メソッドを使うメリット

メソッドを使う主なメリットは以下の通りです。

  • 再利用性が上がる:同じ処理を何度も書かずに済む
  • 可読性が上がる:コードが読みやすくなる
  • 保守性が上がる:修正箇所が一か所にまとまる
  • テストしやすくなる:処理を独立させることで動作確認が楽になる

メソッドを使わないと何が起きるか

メソッドを使わずにコードを書くと、同じ処理が何度も登場します。

たとえば「挨拶文を表示する」処理を3か所で使う場合、メソッドなしだとこうなります。

System.out.println("こんにちは、田中さん!");
System.out.println("こんにちは、佐藤さん!");
System.out.println("こんにちは、鈴木さん!");

これくらいなら問題なさそうですが、処理が複雑になるにつれて同じコードが何十行も重複します。

ある日「こんにちは」を「はじめまして」に変えたくなったとき、全箇所を探して修正しなければなりません。

メソッドを使えば、変更は1か所だけで済みます。

// メソッドを定義する
public static void greet(String name) {
    System.out.println("こんにちは、" + name + "さん!");
}

// 呼び出すだけでOK
greet("田中");
greet("佐藤");
greet("鈴木");

挨拶文を変えたいときは、メソッドの中身を1行直すだけです。これがメソッドの最大の強みです。

メソッドの基本構文と各パーツの役割

Javaのメソッドは、次の形で書きます。

アクセス修飾子 static 戻り値の型 メソッド名(引数の型 引数名) {
    // 処理内容
    return 戻り値; // voidの場合は省略
}

各パーツの意味を整理しておきます。

パーツ役割
アクセス修飾子どこから呼び出せるか(public / private など)
staticインスタンスを作らずに呼び出せる修飾子
戻り値の型メソッドが返す値の型(返さない場合は void)
メソッド名メソッドにつける名前(動詞+名詞が基本)
引数メソッドに渡す値(必要なければ省略可)
return処理結果を返す命令(void のときは不要)

最初はパーツの多さに戸惑うかもしれませんが、1つ1つ確認していけば問題ありません。

次の章でパターン別に実例を見ながら確認していきましょう。

Zetto

メソッドの「再利用」という考え方は、プログラミング全体に通じる重要な概念です。ここをしっかり理解しておくと、この後の内容がぐっと頭に入りやすくなりますよ。

メソッドの書き方|引数・戻り値の4パターン完全解説

メソッド4パターン解説

Javaのメソッドは、引数と戻り値の有無によって4パターンに分類できます。

この章では全パターンを実例つきで解説します。

  • パターン①:引数なし・戻り値なし(void)
  • パターン②:引数あり・戻り値なし(void)
  • パターン③:引数なし・戻り値あり(return)
  • パターン④:引数あり・戻り値あり(return)
  • メソッドの呼び出し方(定義と呼び出しの流れ)

1つずつ見ていきましょう。

パターン①:引数なし・戻り値なし(void)

最もシンプルなパターンです。

引数(メソッドに渡す値)も戻り値(メソッドが返す値)もありません。「ただ処理を実行するだけ」のメソッドです。

public static void showMessage() {
    System.out.println("Javaのメソッド学習中!");
}

呼び出すときはこうなります。

showMessage(); // → 「Javaのメソッド学習中!」と表示される

戻り値がないので、戻り値の型は void(ボイド)と書きます。void は「何も返さない」という意味です。

このパターンは、画面への表示・ログ出力・初期化処理など「実行するだけでいい」場面で使います。

パターン②:引数あり・戻り値なし(void)

外から値を受け取って処理するが、結果は返さないパターンです。

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

呼び出すときはこうなります。

greet("田中"); // → 「こんにちは、田中さん!」と表示される
greet("佐藤"); // → 「こんにちは、佐藤さん!」と表示される

引数(ここでは String name)がある分、受け取った値に応じて処理を変えられます。

パターン①より柔軟に使えますね。

引数は複数指定することもできます。

public static void introduce(String name, int age) {
    System.out.println(name + "さんは" + age + "歳です。");
}

introduce("田中", 25); // → 「田中さんは25歳です。」と表示される

パターン③:引数なし・戻り値あり(return)

処理結果を呼び出し元に返すパターンです。

引数はなく、処理した結果だけを return で返します。

public static int getDefaultScore() {
    return 100;
}

呼び出すときはこうなります。

int score = getDefaultScore();
System.out.println(score); // → 「100」と表示される

return で返した値を変数に入れて使えます。戻り値の型(ここでは int)は、return で返す値の型と一致させる必要があります。

文字列を返すケースも見てみましょう。

public static String getGreeting() {
    return "こんにちは!";
}

String msg = getGreeting();
System.out.println(msg); // → 「こんにちは!」と表示される

パターン④:引数あり・戻り値あり(return)

4パターンの中で、実務での使用頻度が最も高いパターンです。

外から値を受け取り、処理した結果を return で返します。

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

呼び出すときはこうなります。

int result = add(3, 5);
System.out.println(result); // → 「8」と表示される

実務では計算・文字列の加工・条件判定など、あらゆる場面でこのパターンを使います。

僕がフリーランスエンジニアとして関わった大手商業施設の在庫管理システムでも、商品の在庫数チェック・価格計算・入力値のバリデーション(妥当性確認)処理など、このパターン④のメソッドが登場していました。

メソッドの呼び出し方(定義と呼び出しの流れ)

メソッドの「定義」と「呼び出し」の流れを解説します。

定義は「このメソッドはこういう処理をする」と宣言すること。呼び出しは「そのメソッドを実行する」ことです。

public class Main {

    // メソッドの定義
    public static int multiply(int a, int b) {
        return a * b;
    }

    // mainメソッド(プログラムのスタート地点)
    public static void main(String[] args) {
        // メソッドの呼び出し
        int result = multiply(4, 6);
        System.out.println(result); // → 24
    }
}

メソッドはクラスの中に定義します。main メソッドの外に書いても、main の内側から呼び出せます。

Javaのメソッドについてより詳しく知りたい方は、Oracle公式のJavaドキュメントも参考にしてみてください。

Zetto

4パターンを一通り把握できたと思います。最初は混乱しても、実際に手を動かして書いてみると自然と覚えられますよ。

staticメソッドとインスタンスメソッドの違い

staticと動的メソッド

Javaのメソッドには「staticメソッド」と「インスタンスメソッド」の2種類があります。

この違いを理解すると、コードの設計力が一段上がります。

  • staticメソッドとは何か
  • インスタンスメソッドとの使い分け
  • mainメソッドがstaticである理由

順番に解説します。

staticメソッドとは何か

staticメソッドは、クラスのインスタンス(オブジェクト)を作らなくても呼び出せるメソッドです。

static というキーワードをつけて定義します。

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

呼び出すときは、インスタンスを作らずにクラス名から直接呼び出せます。

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

同じクラス内であれば、クラス名なしで呼び出せます。

int result = add(3, 5);

staticメソッドが向いている場面は以下の通りです。

  • 計算・変換などの汎用処理:Javaの Math.abs()String.valueOf() のような共通処理
  • クラスのデータ(フィールド)を使わない処理:受け取った引数だけで結果を返す処理
  • ユーティリティクラス:どこからでも呼び出せる共通機能をまとめたクラス

インスタンスメソッドとの使い分け

インスタンスメソッドは、new でオブジェクトを生成してから呼び出すメソッドです。

public class Greeter {
    private String name; // インスタンス変数(フィールド)

    public Greeter(String name) {
        this.name = name;
    }

    // インスタンスメソッド(staticなし)
    public void greet() {
        System.out.println("こんにちは、" + name + "さん!");
    }
}

呼び出すときは、インスタンスを先に作ります。

Greeter g = new Greeter("田中");
g.greet(); // → 「こんにちは、田中さん!」

staticとインスタンスメソッドの使い分けは、次の基準で判断するとわかりやすいです。

種類使いどころ
staticメソッドクラスのフィールド(データ)を使わない処理
インスタンスメソッドクラスのフィールド(データ)を使う処理

学習初期のうちは「staticをつけてクラスの中に書く」スタイルで練習しながら、徐々にインスタンスメソッドへ移行するのが自然なステップです。

mainメソッドがstaticである理由

Javaのプログラムは必ず main メソッドから始まります。なぜ static がついているのでしょうか。

public static void main(String[] args) {
    // ここからプログラムが始まる
}

理由はシンプルです。Javaの実行エンジン(JVM)は、プログラムを起動するとき最初にクラスを読み込みます。

このとき、まだどのインスタンスも作られていません。インスタンスがない状態でも呼び出せるようにするために、static がついています。

「インスタンスを作る前に呼ばれるから static が必要」という理解でOKです。

staticとインスタンスメソッドの違いは、クラスとオブジェクトの概念を掴むことでより明確に見えてきます。

Zetto

最初は「staticがあるかないか」だけ意識していればOKです。クラスとオブジェクトをもっと深く学ぶにつれて、使い分けが自然とわかってきますよ。

現場で通用するメソッドの書き方・設計の考え方

実務的メソッド設計

基本の4パターンを覚えたら、次は「現場で使えるコード」を書く視点を身につけましょう。

この章では、実務で意識すべき設計の考え方を解説します。

  • アクセス修飾子(public・private)の使いどころ
  • 1メソッド1責務の原則
  • 現場で迷わないメソッドの命名規則
  • メソッドを習得したら次に学ぶこと(クラス・インタフェース)

アクセス修飾子(public・private)の使いどころ

アクセス修飾子とは、メソッドをどこから呼び出せるかを制限する仕組みです。

Javaでよく使うのは publicprivate の2つです。

public(パブリック)

クラスの外からも呼び出せます。他のクラスから使ってほしいメソッドにつけます。

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

private(プライベート)

同じクラス内からしか呼び出せません。クラスの外に見せたくない内部処理に使います。

private static boolean isValidAge(int age) {
    return age >= 0 && age <= 150;
}

僕がJava案件の現場で最初に学んだのが、この「外に出す処理と隠す処理を分ける」考え方です。public を多用しすぎると、どこからでも呼び出されてバグの原因になります。

基本は private で書いて、外から使う必要があるものだけ public にするという意識が大切です。

1メソッド1責務の原則

1つのメソッドには、1つの役割だけを持たせることが大切です。

これを「SRP(単一責任の原則:Single Responsibility Principle)」と呼びます。

悪い例を見てみましょう。

// 悪い例:1メソッドが複数の役割を持っている
public static void processUser(String name, int age) {
    // バリデーション
    if (age < 0) {
        System.out.println("年齢が不正です");
        return;
    }
    // データ加工
    String formattedName = name.trim().toUpperCase();
    // 表示
    System.out.println(formattedName + "さん(" + age + "歳)");
}

このメソッドは検証・加工・表示の3つをまとめて行っています。修正しにくく、テストもしにくいです。

役割を分けると、こうなります。

// 良い例:役割を分割する
private static boolean isValidAge(int age) {
    return age >= 0;
}

private static String formatName(String name) {
    return name.trim().toUpperCase();
}

public static void displayUser(String name, int age) {
    if (!isValidAge(age)) {
        System.out.println("年齢が不正です");
        return;
    }
    System.out.println(formatName(name) + "さん(" + age + "歳)");
}

役割を分けることで、各メソッドが何をしているか一目でわかります。修正も1か所で済むようになります。

現場で迷わないメソッドの命名規則

メソッド名は、読んだ瞬間に何をするメソッドかわかる名前にします。

Javaの命名規則では、メソッド名は小文字始まりのキャメルケース(例:getUserName)が基本です。

よく使う命名パターンは以下の通りです。

パターン
取得系getUserName(), getAge()
設定系setUserName(), setAge()
判定系isValid(), isEmpty(), hasPermission()
処理系calcTax(), formatDate(), sendEmail()

悪い命名と良い命名の違いを比べてみます。

悪い例:process(), doSomething(), check()
良い例:calcTotalPrice(), validateEmail(), isUserLoggedIn()

名前を見ただけで動作がわかるメソッドは、チーム開発でも非常に喜ばれます。

コードは書く時間より読まれる時間の方が圧倒的に長いので、命名に手を抜かないことが大切ですね。

メソッドを習得したら次に学ぶこと(クラス・インタフェース)

メソッドの基礎が身についたら、次はクラスとインタフェースを学ぶのが自然なステップです。

  • クラス:メソッドとデータ(フィールド)をまとめた設計図。オブジェクト指向の基本単位
  • インタフェース:「このメソッドは必ず実装してね」という約束ごとを定義する仕組み

実務のJavaコードはほぼすべてクラスとインタフェースで構成されています。JavaのフレームワークであるSpring Boot(スプリングブート)でも、インタフェースは頻繁に登場します。

AI補完ツールの活用について

2026年現在、GitHub Copilot(ギットハブコパイロット)などのAI補完ツールを使えばコードを素早く生成できます。

ただ、メソッドの役割や設計を理解していないと、AIが生成したコードを読んでも「何をしているのか」がわかりません。

基礎を自分の手で身につけておくことが、AIを活かせるエンジニアへの土台になります。現場レベルのメソッド設計は、書く量を積み重ねてはじめて身につきます。

まず基本の4パターンを手で書いて覚えることから始めましょう。

Zetto

現場ではメソッド名の命名1つで「丁寧なエンジニアだ」という印象が変わります。最初から良い命名の習慣をつけておくと、後々すごく助かりますよ。

Javaのメソッドの演習課題3問

メソッド演習3問

ここまでの内容を定着させるために、実際に手を動かしてみましょう。

この章では、一人で取り組める演習課題を3問用意しました。

  • 2つの数の平均値を返すメソッドを書く
  • 文字列が空かどうかを判定するメソッドを書く
  • 名前と点数を受け取って合否メッセージを返すメソッドを書く

模範解答も用意しているので、まず自分で考えてから実践してみてください。

課題①:2つの数の平均値を返すメソッド

引数に2つの整数を受け取り、その平均値(小数あり)を返すメソッドを書いてください。

  • メソッド名:calcAverage
  • 引数:int a, int b
  • 戻り値の型:double

模範解答

public static double calcAverage(int a, int b) {
    return (double)(a + b) / 2;
}

// 呼び出し例
double avg = calcAverage(5, 10);
System.out.println(avg); // → 7.5

ポイントは (double) というキャスト(型変換)です。整数同士の割り算はJavaでは小数点以下が切り捨てられるため、double に変換してから割ります。

課題②:文字列が空かどうかを判定するメソッド

引数に文字列を受け取り、空(長さが0)なら true、文字が入っていれば false を返すメソッドを書いてください。

  • メソッド名:isEmpty
  • 引数:String text
  • 戻り値の型:boolean

模範解答

public static boolean isEmpty(String text) {
    return text.length() == 0;
}

// 呼び出し例
System.out.println(isEmpty(""));      // → true
System.out.println(isEmpty("hello")); // → false

判定系のメソッドは is〇〇 という命名にするのが慣習です。戻り値が true / false になるメソッドに自然に使えます。

課題③:名前と点数を受け取って合否メッセージを返すメソッド

引数に名前(文字列)と点数(整数)を受け取り、点数が60点以上なら「〇〇さん:合格」、未満なら「〇〇さん:不合格」という文字列を返すメソッドを書いてください。

  • メソッド名:getResult
  • 引数:String name, int score
  • 戻り値の型:String

模範解答

public static String getResult(String name, int score) {
    if (score >= 60) {
        return name + "さん:合格";
    } else {
        return name + "さん:不合格";
    }
}

// 呼び出し例
System.out.println(getResult("田中", 75)); // → 田中さん:合格
System.out.println(getResult("佐藤", 45)); // → 佐藤さん:不合格

引数あり・戻り値ありのパターン④の応用です。if文と組み合わせることで、より実用的なメソッドが書けます。

3問とも自分で書けたなら、Javaのメソッドの基礎は十分身についています。

Zetto

演習は「見てわかる」から「手で書いてわかる」への大事なステップです。模範解答を見てからでもいいので、自分の手でコードを打ち込んでみてくださいね。

Javaのメソッドに関するよくある質問

メソッドFAQ

よくある質問と回答をまとめました。

  • voidとreturnはどう使い分ければいい?
  • staticはいつつければいい?
  • メソッドを自分でゼロから書けるようになる練習方法は?

voidとreturnはどう使い分ければいい?

「メソッドの外で処理結果を使いたいかどうか」で決まります。

return を使うのは、メソッドの外(呼び出し元)で処理結果を受け取って使いたい場合です。

int result = add(3, 5); // resultとして受け取って後から使う

void を使うのは、メソッドの中だけで処理が完結する場合です。

showMessage(); // 表示するだけで、返す値はない

判断の基準をシンプルにまとめます。

  • 外で結果を使う → return(戻り値あり)
  • 表示・出力・実行だけでいい → void(戻り値なし)

最初は「計算・判定系は return」「表示・出力系は void」と覚えておくと判断しやすいです。

staticはいつつければいい?

学習初期のうちは「クラスのフィールド(変数)を使わないメソッドには static をつける」と覚えておけばOKです。

// フィールドを使わない → staticでいい
public static int add(int a, int b) {
    return a + b;
}

// フィールドを使う → staticなし(インスタンスメソッド)
public class User {
    private String name; // フィールド

    public String getName() { // nameを使うのでstaticなし
        return name;
    }
}

main メソッドの中で練習するときは、ほぼすべてのメソッドに static をつけて問題ありません。

クラス設計を学ぶ段階で、インスタンスメソッドの使いどころが自然と見えてきます。

メソッドを自分でゼロから書けるようになる練習方法は?

「小さなプログラムを、メソッドを使って書き直す」練習が一番身につきます。

具体的な練習ステップは以下の通りです。

  • ステップ1:まず main の中にベタ書きでプログラムを書く
  • ステップ2:処理のまとまりを見つけて、メソッドとして切り出す
  • ステップ3:切り出したメソッドに適切な名前をつける
  • ステップ4:引数・戻り値を意識して設計し直す

この繰り返しで、自然とメソッドを書く感覚が身についていきます。

Java Silver の資格学習をするのも、メソッドの設計力を体系的に鍛えるうえで有効な方法です。

試験問題を通じてメソッドのパターンを繰り返しアウトプットできるため、理解が定着しやすいです。

僕自身、Java Silver・Java Gold の学習を通じてメソッドの設計の考え方が一気に整理された実感がありました。

Javaメソッドの基礎を固めて、次のステップへ

メソッド基礎から応用へ

この記事では、Javaのメソッドについて以下の内容を解説しました。

  • メソッドの役割:処理をまとめて再利用できる仕組み
  • 引数・戻り値の4パターン:void と return の使い分け
  • static とインスタンスメソッドの違い:クラスとの関係
  • 現場で使える設計の考え方:命名・単一責任・アクセス修飾子
  • 演習課題3問:手を動かして定着させる

Javaのメソッドは、最初は構文が多くて戸惑う部分もあります。

でも4パターンを実際に書いて動かしてみると、思った以上にすんなり頭に入ってきます。

メソッドが書けるようになったら、次のステップとしてクラスとオブジェクト指向を学んでいくのが自然な流れです。

基礎をしっかり固めた上でクラスへ進むと、実務レベルのJavaコードが読めるようになってきます。

Mirai

4パターンの整理がわかりやすかった!演習問題にも挑戦してみます。

Zetto

その調子!手を動かすことが一番大事だね。メソッドが書けるようになったら、クラスの設計も楽しくなってくるはず!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次