IT転職・プログラミングスクール

変数の正しい範囲(スコープ)は?【Java Silver例題】

Java Silver 例題

この記事は、Oracle Java SE8 Silver(1Z0-808)の対策講座です。

今回は、変数の正しい範囲(スコープ)についてです。

変数を宣言する場所によってその変数の有効な範囲が決まります。

これを変数スコープと言います。

Java Siliverでは変数スコープの出題頻度は非常に高いので、確実に対策しておく必要があります。

 

問題:変数の範囲(スコープ)について

早速ですが、次の2問を解いてみてください。

問1

A.   0
B.   1
C.   2
D.  コンパイルエラー

 

問2

A.   0
B.   1
C.   2
D.   3
E.   コンパイルエラー

 

いかがでしょうか?

 

答えは、どちらもコンパイルエラーになるの
問1 D
問2
E   です。

 

Java Silver 問題集
参考記事【Java Silver問題集】高頻出・間違えやすい問題たち

この記事は、Oracle Java SE8 Silver(1Z0-808)の対策講座です。 出題確率が高く、間違いやすい例題が解説付きで100問以上あります。   Java Silver 問 ...

続きを見る

 

変数スコープのポイントと解説

変数の範囲(スコープ)について、知っておくべきポイントは次の通りです。

ポイント

●処理区間内で宣言した変数は、その区間外で扱うとコンパイルエラーになる

●変数宣言をする前にその変数を扱うとコンパイルエラーになる。

1つずつ解説していきます。

 

区間内で宣言した変数

forやwhile,ifなどには’{ }’で囲まれた処理区間があります。

この区間内で変数宣言をすることがよくありますが、その変数を区間外からアクセスするとコンパイルエラーになります。

次のwhile文のように、区間内で宣言されたnumは、while文から出た後でアクセスされているため、コンパイルエラーになります。

  1.   public class Main {
  2.     public static void main(String[] args) {
  3.        int a = 0;
  4.        while(a < 3){
  5.           int num = 0;
  6.           a++;
  7.       }
  8.       nun = num + 3;          //コンパイルエラー
  9.    }
  10. }

反対に、区間外で宣言されたaがwhile文内からアクセスされていますが、この場合はコンパイルエラーにはなりません。

 

変数宣言と処理の順序

プログラミングでは書かれたコードは上から順に処理されていきます。

ここで注意すべきポイントは、変数のスコープは宣言をした後のみ有効であることです。

例えば、次の例のように変数を演算する場合、その変数の宣言が演算式よりも前にある必要があります。

  1.   public class Main {
  2.      public static void main(String[] args) {
  3.        a++;          //コンパイルエラー
  4.        int a = 3;
  5.     }
  6.  }

変数をクラス全体で扱いたい場合は、はじめに変数宣言をしておくことが望ましいです。

解説

ここまでのポイントをおさえていれば、今回の問題は簡単に解くことができます。

A.   0
B.   1
C.   2
D.  コンパイルエラー

 

3行目で変数aを出力していますが、このaはこの後の4行目で宣言されています。

そのため、変数のスコープ外での処理となるので3行目でコンパイルエラーになります。

 

A.   0
B.   1
C.   2
D.   3
E.   コンパイルエラー

 

7行目で変数countを出力していますが、countはfor文の区間内で宣言されています。

そのため、countの変数スコープはfor文区間内のみです。

したがって、区間外からの処理により7行目でコンパイルエラーになります。

 

 

Java Silver 問題集
参考記事【Java Silver問題集】高頻出・間違えやすい問題たち

この記事は、Oracle Java SE8 Silver(1Z0-808)の対策講座です。 出題確率が高く、間違いやすい例題が解説付きで100問以上あります。   Java Silver 問 ...

続きを見る

-IT転職・プログラミングスクール
-,

Copyright© 人生2段飛ばし , 2020 All Rights Reserved Powered by AFFINGER5.