≪Java≫ 値を返すメソッド内のローカル変数の宣言(if文・swich文)

≪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;
}
↑ コメント部分の記述があれば実行時エラーにならない。



引っ越し前の記事
シェアする
senをフォローする
プレミア商品・お得商品情報局(予約・再販情報も)


タイトルとURLをコピーしました