≪Java≫ 値を返すメソッド内のローカル変数の宣言
次のような場合は、問題がないが、
public static void main(String[] args) {
int w;
int a = 1;
switch(a){
case 1:
w = 1;
System.out.println(w);
}
}
以下の条件では、予め変数の宣言だけでなく、初期化しておかないと実行時エラーになる。
≪条件≫
① 値を返すメソッド内で
② return文で使用する変数を
③-1 初期化せずに、switch文内で使用する
③-2 初期化せずに、elseのないif文内(else ifがあってもダメ)で使用する
※ ③は、1,2どちらかの条件で
≪結果≫
return文でその変数が「初期化されていない変数」として実行時エラーとなる。
【例文】
===switch文の場合===
public static void main(String[] args) {
int w = test();
System.out.println(w);
}
public static int test(){
int w; //←①
int a = 1;
switch(a){
case 1:
w = 1;
}
return w;
}
※ ①の後、明示的に初期化しないと実行時エラーになる
===if文の場合===
public static void main(String[] args) {
int w = test();
System.out.println(w);
}
public static int test(){
int w;
int a = 1;
if(a==1){
w = 1;
}else if(a==2){
w = 2;
//}else{
//w = 3;
//}
return w;
}
↑ コメント部分の記述があれば実行時エラーにならない。