美人すぎない化粧品販売員がアプリ開発を目指す

Javaの構文、オブジェクト指向、APIなど、プログラミング初心者の私がアプリ開発までに理解したことをまとめたブログ

メソッド内の変数の使用範囲(スコープ)

メソッド内の変数の使用範囲(スコープ)

 ブロック内で宣言された変数は同じブロック内しか使用できない

 

〈エラーになってしまう例〉

 class Main{

            int x=100;

            int y=10;

          add(  );

        }

Mainの中でadd( )メソッドを定義して、ブロック外でadd( )メソッドを使おうとすると、、

  add(  ){

            int ans=x+y;

           }

 違うブロックになってしまうので、add( )の中の変数xとyが見つけられず、エラーになってしまう

 

〈修正後〉

 xとyをメソッド内に記述してしまうと、変数を見つけられずエラーになってしまうので、メゾッド内で引数(変数ではなく、具体的な値)として情報を渡すように書き換える

(1つのブロック内にしかxとyは使わないように書き換える)

 

 class Main{

         add(100,20);

       }

   add(int x,int y){

         int ans=x+y;

    }

 

※使用範囲(スコープ)はその変数が属するメソッド内だけで有効なので、

 別メソッドに属する同名のローカル変するとは全く別物になる

 →違うブロックで同じ名前で変数を定義したとしても、その実態は全く別物になっている

〈エラーになってしまう例〉

  Main{

         int x=100;

         for(int i=0...){

                  int y=200;

             }

         method A(int x){←int xが見つからず、エラー(定義がブロック外だから)

             int y=10;

            }

ここでのMainメソッド内の変数yとmethod A内の変数yは名前は同じだけど無関係

よって、method Aの変数yにどんな値を代入してもmainメソッドの変数yには影響しない