1. はじめに
変数には、「スコープ」と呼ばれる可視範囲があります。
ある範囲では、その変数が使えるが、その範囲外では、その変数が使えないといったものが、スコープです。
基本的に、変数は、宣言された行から { } の間にまでが寿命となり、その外に出てしまえば、使えなくなってしまいます。
私は、寿命って言葉をよく使います。スコープ寿命
※スコープを意識するのは、制御文を勉強した後からとなりますが、一応基本的なことなので先に記述しておきます。
制御文を一通り終えた後に、またこの「スコープ」を見てもらえると理解が深まるかなと思います。
飛ばしてしまって、また後でこのページに戻ってきてもらうのも構いません。
それでも、一応目を通しておきたいという方は、そのまま読み進めてください。
それと、今回は説明上、いびつなプログラムになっていますので、真似した書き方はあまりしないと思います。
2. スコープ
先ほども記述しましたが、スコープには { } の間が寿命となります。
今までのプログラムだと、気にしていなかったはず。
public class Main {
public static void main(String[] args) {
int test = 100;
System.out.println(test);
}
}
100を出力しているだけですね!
では、次のプログラムはどうでしょうか?
public class Main {
public static void main(String[] args) {
int outter = 100;
{
int inner = 200;
} // inner の寿命
// outter と inner の加算を出力
System.out.println(outter + inner);
} // outter の寿命
}
エラーになるはず!ぶきっちょなソース
何故なら inner の寿命が尽きた後に、標準出力に inner を使用しているからです。無いものを使おうとしているわけですね。
コメントで「// inner の寿命」と記載しているところで、inner という変数は寿命が尽き、その外では使うことは出来ません。
試しに次のソースは問題なく動くことができます。
public class Main {
public static void main(String[] args) {
int outter = 100;
{
int inner = 200;
// outter と inner の加算を出力
System.out.println(outter + inner);
} // inner の寿命
// outter の出力
System.out.println(outter);
} // outter の寿命
}
途中で inner と outter を出力してますね。
捕捉として、outter は、inner が宣言されている { } の間でも使用することは出来ます。
3. おわりに
普通は今後使う「制御文」というもの以降の勉強で、スコープを意識するようになります。
今回のようなソースの書き方は普通しません。
ごめんなさい。説明上ぶきっちょな書き方になっています。
とりあえず、
変数は { } の範囲が寿命
とだけでも覚えてもらえると嬉しいです!!
以上です!
次回は「if文」について書きます!制御文!
長かったですが、ここからプログラムらしくなっていきます!
楽しくがんばりましょー!
次回 →「Javaのお勉強 ~その10~ if文」