今回IDEであるeclipseを使って、プログラミング学習を行っているのだが、eclipseで「変数が未定義です」とエラーが出た時に、確認しておきたいことを整理した。
- 変数がそもそも宣言されていない
- 宣言はしているが、変数のスコープの適応外の場所で参照しようとする
変数がそもそも宣言されていない・変数が初期化されていない。
変数がそもそも宣言されていないと、エラーになる。
変数の宣言や、初期化は下記のようにできる。
//変数の宣言
データ型名 変数名;
//変数の初期化
変数名 = 値;
//宣言と初期化を一緒に記述
データ型名 変数名 = 値;
変数のスコープの適応外の場所で参照しようとする
変数のスコープ(宣言した変数が適応される場所)を無視して変数をおこうとすると、エラーが起きる。
Java言語でスコープで影響を与える要素としては、下記のブログが、全体像わかりやすく乗せていた。
- ローカル変数、インスタンスフィールド、static フィールド
https://nagise.hatenablog.jp/entry/20160425/1461589722
- 参照箇所がインスタンスメソッドか、staticメソッドか
- 継承階層
- アクセス修飾子 (public, protected, private, パッケージプライベート)
- 内部クラス(インナークラス)
- 匿名クラス・ラムダ式
- モジュール (Java9の新機能。参考: 「JavaOne 2015」レポート、注目浴びたProject Jigsaw | 日経 xTECH(クロステック))
上記の要素から、変数が、範囲外のところで置こうとするとエラーが出る。
他にも、変数の大文字小文字のスペルが違うとか、細かな理由もあるが、上記二点は初学者として、気をつけていきたい。