archive

変数が未定義ですとエラーが出た時に考えられること


今回IDEであるeclipseを使って、プログラミング学習を行っているのだが、eclipseで「変数が未定義です」とエラーが出た時に、確認しておきたいことを整理した。

  1. 変数がそもそも宣言されていない
  2. 宣言はしているが、変数のスコープの適応外の場所で参照しようとする
  3. スペルミス

変数がそもそも宣言されていない・変数が初期化されていない。

変数がそもそも宣言されていないと、エラーになる。

使おうとしている変数がちゃんと宣言されているか、初期化しているかなどを確認する。

Javaの場合の変数の宣言と初期化は下記のようになる。

`//変数の宣言
データ型名 変数名;

//変数の初期化 変数名 = 値;

//宣言と初期化を一緒に記述 データ型名 変数名 = 値;`

プログラミング言語によっては、データ型を宣言しなくて良いものもある。

データ型宣言のメリットについては、下記に書いた。

変数のスコープの適応外の場所で参照しようとする

変数のスコープ(宣言した変数が適応される場所)を無視して変数をおこうとすると、エラーが起きる。

Java言語でスコープで影響を与える要素としては、下記のブログが、全体像わかりやすく乗せていた。

  • ローカル変数、インスタンスフィールド、static フィールド
  • 参照箇所がインスタンスメソッドか、staticメソッドか
  • 継承階層
  • アクセス修飾子 (public, protected, private, パッケージプライベート)
  • 内部クラス(インナークラス)
  • 匿名クラス・ラムダ式
  • モジュール (Java9の新機能。参考: 「JavaOne 2015」レポート、注目浴びたProject Jigsaw | 日経 xTECH(クロステック))

https://nagise.hatenablog.jp/entry/20160425/1461589722

上記の要素から、変数が、範囲外のところで置こうとするとエラーが出る。

なぜ変数のスコープをわざわざ作るのかという部分に関しては、下記に書いた。

アクセス修飾子についてはこちらでも書いた。

 
  アクセス修飾子について  
 

   

  • [Java] publicクラスについてちょっと学んでみた
  •    
  • [Java / @Override] オーバーライドとは
  •    
  • [Java] アクセス修飾子のpublicとprivateの違い
  •    
  • [Java / getter] ゲッターとは |アクセス修飾子privateとゲッター
  •    
  • [Java / setter] セッターとは
  •  

    Staticや継承についてはこちら。

     
      関連記事  
     

       

  • [Java]クラスメソッド(Staticメソッド)とインスタンスメソッドの違い
  •    
  • [Java] Staticとは
  •    
  • [Java] 継承とは
  •  

    スペルミス

    スペルミスはコードを書いていると頻繁に起きるものだが、最初の慣れないうちは、スペルミスという選択肢が頭になくなぜ間違っているのか発見できなかったりする。

    大文字小文字の使い方なども気をつけていきたい。

    全体像を把握する

    下記にJavaやwebアプリケーションについての記事をまとめた。

    [st-card myclass="" id=3431 label="" pc_height="" name="" bgcolor="" color="" fontawesome="" readmore=“on”]

    コンピューターについての全体像も把握しておくと、プログラミングのさらなる理解に役立つ。

    [st-card myclass="" id=4587 label="" pc_height="" name="" bgcolor="" color="" fontawesome="" readmore=“on”]