メソッド内の変数の使用範囲(スコープ)
メソッド内の変数の使用範囲(スコープ)
ブロック内で宣言された変数は同じブロック内しか使用できない
〈エラーになってしまう例〉
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には影響しない