LoginSignup
5
4

More than 5 years have passed since last update.

Javaのお勉強 ~その9~ スコープ

Last updated at Posted at 2018-06-02

1. はじめに

変数には、「スコープ」と呼ばれる可視範囲があります。
ある範囲では、その変数が使えるが、その範囲外では、その変数が使えないといったものが、スコープです。

基本的に、変数は、宣言された行から { } の間にまでが寿命となり、その外に出てしまえば、使えなくなってしまいます。
私は、寿命って言葉をよく使います。スコープ寿命


スコープを意識するのは、制御文を勉強した後からとなりますが、一応基本的なことなので先に記述しておきます。

制御文を一通り終えた後に、またこの「スコープ」を見てもらえると理解が深まるかなと思います。
飛ばしてしまって、また後でこのページに戻ってきてもらうのも構いません。

それでも、一応目を通しておきたいという方は、そのまま読み進めてください。
それと、今回は説明上、いびつなプログラムになっていますので、真似した書き方はあまりしないと思います。


2. スコープ

先ほども記述しましたが、スコープには { } の間が寿命となります。

今までのプログラムだと、気にしていなかったはず。

Main.java
public class Main {
    public static void main(String[] args) {

        int test = 100;

        System.out.println(test);

    }
}

100を出力しているだけですね!

では、次のプログラムはどうでしょうか?

Main.java
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 という変数は寿命が尽き、その外では使うことは出来ません。


試しに次のソースは問題なく動くことができます。

Main.java
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文

5
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
4