1-7 インスタンス変数の問題

次のコードを確認してください。

class InstanceVariable{
    int num1;
    static int num2;
    public static void main(String[] args){
        new InstanceVariable().foo();
    }
    void foo(){
        int num3 = 3;
        bar();
        System.out.print(num3);
    }
    void bar(){
        int num4 = 8;
        System.out.print(num4);
        for(int num5 = 0; num5 < 10; num5++){
            System.out.print(num5);
            System.out.print(num4);
        }
    }
}

このコードでインスタンス変数にあたるものはどれですか。

1つ選択してください。

A.num1

B.num2

C.num3

D.num4

E.num5

《解説》

インスタンス変数についての問題です。

インスタンス変数とはクラスから生成した各オブジェクトが保持する変数で、クラス内 (メソッドの外側)で宣言します。

各選択肢の解説は、 以下のとおりです。

選択肢A

2行目で宣言されている変数num1は、InstanceVariableクラス内(メソッドに属さない)で定義されているためインスタンス変数です。したがって、正解です。

選択肢B

3行目で宣言されている変数num2は、static修飾子が指定されているため、static変数です。static変数は、各オブジェクトが保持する変数ではなく、クラスが保持する変数です。したがって、不正解です。

選択肢C、D、E

8行目、13行目、15行目で宣言されている変数num3、変数num4、変数num5はブロック内で定義されるローカル変数です。ローカル変数は、それぞれ定義されたブロック内 (foo()メソッド、bar()メソッド、forブロック)でのみ使用できます。したがって、不正解です。

《答え》