Javaのローカル変数とは?メソッドの中だけで使える変数の考え方

最終更新日

Schoo Java入門 初級【2026年版】

本記事は、Schooの「Java入門 初級【2026年版】」第6回「メソッド」を学ぶ前後に、Javaのローカル変数の考え方を整理したい方向けのステップアップ学習記事です。

ただし、Schooを受講していない方でも、メソッド、引数、戻り値の基本を学んだあとに読み進められる内容にしています。

Schoo コースページ:Java入門 初級【2026年版】

ローカル変数とは、メソッドの中で宣言して、そのメソッドの処理中だけ使う変数です。計算の途中結果を入れたり、条件分岐で使う値を一時的に持たせたりするときに使います。

ローカル変数はメソッドの中で作る変数

次の例では、calculateDiscount メソッドの中で discount というローカル変数を宣言しています。

public static int calculateDiscount(int total) {
    int discount = 0;

    if (total >= 5000) {
        discount = 500;
    }

    return discount;
}

discount は、割引額を計算するための作業用の変数です。メソッドの中で値を入れ、最後に return discount; で結果として返しています。

図解:ローカル変数はメソッドの中だけで使える
コード上の見え方
public class OrderService {
  public static int calculateDiscount(int total) {
    int discount = 0;
    if (total >= 5000) {
      discount = 500;
    }
    return discount;
  }
  public static void printResult() {
    System.out.println(discount);
  }
}
使える範囲
discountcalculateDiscount メソッドの中で作られた変数なので、そのメソッドの中だけで使えます。
外からは見えない
別のメソッドから discount を直接使おうとすると、変数が見つからないためエラーになります。
ローカル変数は、宣言したメソッドやブロックの中だけで使える変数です。

ローカル変数は外のメソッドから使えない

ローカル変数は、宣言したメソッドの中だけで使えます。たとえば、calculateDiscount の中で宣言した discount は、別のメソッドから直接使えません。

public static int calculateDiscount(int total) {
    int discount = 0;
    return discount;
}

public static void printResult() {
    System.out.println(discount); // エラー
}

printResult メソッドの中には discount が宣言されていないため、Javaはその変数を見つけられません。この「変数を使える範囲」をスコープと呼びます。

引数もメソッドの中で使える変数

メソッドの引数も、そのメソッドの中で使える変数です。次の例では、total は呼び出し元から渡された値を受け取る変数で、discount はメソッドの中で作った変数です。

public static int calculateDiscount(int total) {
    int discount = 0;

    if (total >= 5000) {
        discount = 500;
    }

    return discount;
}

totaldiscount は役割が違います。total は外から渡された注文金額、discount はメソッド内で計算する割引額です。どちらも calculateDiscount の中で使う変数です。

図解:メソッドを呼び出すたびにローカル変数は作り直される
1回目の呼び出し
calculateDiscount(3000)
total = 3000
discount = 0
2回目の呼び出し
calculateDiscount(6000)
total = 6000
discount = 500
discount は同じ名前でも、メソッドを呼び出すたびに新しく用意されます。前回の値が次の呼び出しに残るわけではありません。
ローカル変数は、メソッドの処理中に一時的に使われる作業用の変数です。

フィールドとの違い

フィールドは、オブジェクトが持つ値です。一方、ローカル変数はメソッドの処理中だけ使う値です。

public class Student {
    String name; // フィールド

    public void printName() {
        String message = "名前:" + name; // ローカル変数
        System.out.println(message);
    }
}

nameStudent オブジェクトが持つフィールドです。messageprintName メソッドの中だけで使うローカル変数です。

確認問題

  1. calculateDiscount メソッドの中で宣言した discount は、別のメソッドから直接使えますか。
  2. 引数の total と、メソッド内で宣言した discount の役割の違いを説明してください。
  3. Student クラスの name と、printName メソッド内の message は、それぞれフィールドとローカル変数のどちらですか。

演習後の確認:こちらのページを使って、自分で考えた内容を見直せます。

あわせて読みたい関連記事

まとめ

ローカル変数は、メソッドの中で一時的に使う変数です。宣言したメソッドやブロックの中だけで使え、外のメソッドからは直接使えません。引数、ローカル変数、フィールドの違いを意識すると、メソッドの中で値がどこから来て、どこまで使えるのかを読み取りやすくなります。

シェアする