オブジェクト指向の基礎比較問題

Javaにおける「クラス変数(staticフィールド)」と「インスタンス変数」の違いとして、最も適切なものはどれですか?

A.クラス変数はすべてのインスタンスで共有されるが、インスタンス変数は各インスタンスが独立した値を持つ← 正解
✓ 正解です。staticフィールド(クラス変数)はクラス全体で1つの値を共有し、インスタンス変数は各インスタンスが独自の値を保持します。
B.インスタンス変数はstaticキーワードで宣言し、クラス変数はstaticなしで宣言する
✗ 逆です。クラス変数はstaticキーワードで宣言し、インスタンス変数はstaticなしでクラス直下に宣言します。
C.クラス変数はメソッド内でのみ宣言でき、インスタンス変数はクラスの直下にしか宣言できない
✗ クラス変数もインスタンス変数も、どちらもクラスの直下(メソッドの外)に宣言します。
D.インスタンス変数はプログラム起動時に1つだけ生成され、クラス変数はインスタンスごとに生成される
✗ 説明が逆です。クラス変数がプログラム内で1つ共有され、インスタンス変数はインスタンスごとに生成されます。

Oracle Certified Java Programmer, Bronze SE の問題一覧