Javaの基礎文法 変数のスコープ(3-8)

記事上広告

変数のスコープとは

変数を利用するとデータを保存することが可能です。

変数を利用する際には「宣言」を行う必要がありますが、Javaでは変数の宣言する箇所によって保存したデータを利用できる範囲(スコープ)が変わります

Javaの変数は宣言する箇所によって「フィールド」「ローカル変数」と呼ばれるスコープの異なる2種類の変数がありますが、第3章までではローカル変数しか利用していないため、ここではローカル変数に絞って説明します。
※スコープのルールはフィールドもローカル変数も変わりません

変数のスコープとローカル変数

前述しましたが、スコープは変数内のデータが利用できる範囲です。具体的にはブロック内({}内)で宣言された変数のデータはブロック内でのみ利用が可能になっています。

上の図のように、変数aはifブロック内で宣言されています。ifブロック内で利用可能で、forはifの中に入っているのでforブロック内でも利用できます。変数iはfor内で宣言されており、forブロックでは利用可能ですが、forブロックの外では利用できません。

以下のプログラムは、6および8行目はスコープがもとでエラーとなります。

ローカル変数とはメソッドの中で宣言された変数のことで、今まで(3-8まで)のところmain()メソッド内で変数は宣言しているので、全てローカル変数ということになります。

また、ローカル変数同士はスコープが違っていても同じ変数名を利用するとエラーとなります。

メソッドの外で宣言されている変数のことはフィールドやメンバ変数と呼ばれます。フィールドに関してはオブジェクト指向の章で紹介するため、説明は割愛します。

スコープ 復習問題

問題
  • スコープは変数の○で異なる。○に入る語句を選んでください。
  • 宣言した○内で変数が利用できる。○に入る語句を選んでください。
  • メソッド内で宣言した変数を○変数と呼ぶ。○に入る語句を選んでください。
  • メソッド外で宣言した変数を○と呼ぶ。○に入る語句を選んでください。
  • 以下のプログラムはどのような結果になるか選んでください。
  • お疲れ様でした。
解答群
    1. 変数名
    2. データ
    3. 宣言
    1. ブロック
    2. 出力処理
    3. 変数
    4. データ
    1. int
    2. フィールド
    3. ローカル
    4. 配列
    1. int
    2. フィールド
    3. ローカル
    4. 配列
    1. コンパイルエラー
    2. 実行時エラー
    3. 0から99まで表示される
    4. 0から99まで10回表示される

まとめ

  • 宣言した位置によって変数の利用できる範囲(スコープ)が変わる
  • 宣言したブロック{}内で利用ができる
  • ローカル変数同士だと、スコープが異なっていても同じ名前は宣言できない
スポンサーリンク
レクタングル