マンガで分かる Java入門講座

第8章 メソッド
8-4. メソッド内のローカル変数

メソッド内で宣言されて、メソッド終了と共に破棄される、ローカル変数を紹介します。

● ローカル変数

 メソッド内で宣言された変数は「ローカル変数」と呼ばれます。

 ローカル変数は、メソッドが終了した時点で破棄されて利用できなくなります。再びメソッドが呼び出された場合は、新たに宣言された変数が作成されます。この新規の変数は、以前の値やオブジェクトとは無関係のものになります。

図)ローカル変数の作成と消滅
       ┏入力━━━━━┓
      ┏┫       ┣┓
      ┃┗━━━━━━━┛┃
      ┃┏内部処理━━━┓┃
      ┃┃ ・変数作成 ┃┃
メソッド━━┫┃   ↓   ┃┃
      ┃┃ ・変数消滅 ┃┃
      ┃┗━━━━━━━┛┃
      ┃┏出力━━━━━┓┃
      ┗┫       ┣┛
       ┗━━━━━━━┛

 また、ローカル変数は、他のメソッドから呼び出すことはできません。なぜならば、1つのメソッド内で完結する局地的な変数だからです。

図)メソッドをまたいで利用できない
メソッド1               メソッド2
 ┏入力━━━━━┓          ┏入力━━━━━┓
┏┫       ┣┓        ┏┫       ┣┓
┃┗━━━━━━━┛┃        ┃┗━━━━━━━┛┃
┃┏内部処理━━━┓┃        ┃┏内部処理━━━┓┃
┃┃ ・変数作成───┐       ┃┃       ┃┃
┃┃   ↓   ┃┃│       ┃┃       ┃┃
┃┃ ・変数利用 ┃┃└───×─────→・変数利用 ┃┃
┃┃   ↓   ┃┃ メソッドを  ┃┃       ┃┃
┃┃ ・変数消滅 ┃┃ またいで   ┃┃       ┃┃
┃┗━━━━━━━┛┃ 利用できない ┃┗━━━━━━━┛┃
┃┏出力━━━━━┓┃        ┃┏出力━━━━━┓┃
┗┫       ┣┛        ┗┫       ┣┛
 ┗━━━━━━━┛          ┗━━━━━━━┛

● ローカル変数とフィールドの挙動の確認

 以下、ローカル変数とフィールドの挙動の違いを確認するコードを示します。

ソースコード)ローカル変数とフィールドの挙動の確認 src/sample/MyClass.java
package sample;

public class MyClass {
    // フィールド
    private int fieldN = 0;

    public void useLocal() {
        // フィールドの挙動
        System.out.println("fieldN 1 : " + fieldN);
        fieldN ++;
        System.out.println("fieldN 2 : " + fieldN);
        System.out.println("------------");

        // ローカル変数
        int localN = 0;

        // ローカル変数の挙動
        System.out.println("localN 1 : " + localN);
        localN ++;
        System.out.println("localN 2 : " + localN);
        System.out.println("------------");
    }
}

ソースコード)ローカル変数とフィールドの挙動の確認 src/sample/Sample.java
package sample;

public class Sample {
    public static void main(String[] args) {
        MyClass mc = new MyClass();
        mc.useLocal();
        mc.useLocal();
    }
}

出力)ローカル変数とフィールドの挙動の確認
fieldN 1 : 0
fieldN 2 : 1
------------
localN 1 : 0
localN 2 : 1
------------
fieldN 1 : 1
fieldN 2 : 2
------------
localN 1 : 0
localN 2 : 1
------------

この講座のマンガ部分は「箱人形マンガ(Box Comic) 」で作成しています。
作成:2013/05/31  更新:2016/02/09  [Permalink]