[解決済み] switchケースでの変数のスコープ [重複]。
2022-11-14 10:02:54
質問
switchの場合のスコープの仕組みがよくわからないと思うのですが。
なぜ最初のコードはコンパイルされず、2番目のコードはコンパイルされるのか、誰か私に説明することができますか?
コード1:
int key = 2;
switch (key) {
case 1:
String str = "1";
return str;
case 2:
String str = "2"; // duplicate declaration of "str" according to Eclipse.
return str;
}
コード2:
int key = 2;
if (key == 1) {
String str = "1";
return str;
} else if (key == 2) {
String str = "2";
return str;
}
変数 "str"のスコープがケース1内に収まらないのはなぜですか?
ケース1の宣言をスキップすると、変数 "str"は宣言されないのですが...。
どのように解決するのですか?
他の人が言っていることを繰り返しますが、各変数のスコープが
case
節の変数のスコープは
switch
文に対応します。ただし、以下のように中括弧を使ってさらに入れ子のスコープを作ることができます。
int key = 2;
switch (key) {
case 1: {
String str = "1";
return str;
}
case 2: {
String str = "2";
return str;
}
}
という変数があるため、このコードは正常にコンパイルされます。
str
という変数が各
case
節はそれ自身のスコープにある。
関連
-
JAVA_HOME環境変数が正しく定義されていない問題を解決する
-
Java appears タイプEを囲むインスタンスがアクセスできない。
-
[解決済み] Rubyのswitch文の書き方
-
[解決済み] Pythonのswitch文の代用品?
-
[解決済み] switch文の中で変数を宣言してはいけないのはなぜですか?
-
[解決済み] Stringでswitch文が使えないのはなぜですか?
-
[解決済み] JavaScriptで複数ケースを扱うSwitch文
-
[解決済み] switch文の複数ケース
-
[解決済み] ループの前に変数を宣言するのか、ループの中で宣言するのかの違い?
-
[解決済み】1つのswitch case文に2つの値を使用する場合
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
mvn' は、内部または外部のコマンド、操作可能なプログラムまたはバッチファイルとして認識されません。
-
NullPointerException - java.lang.
-
undefined[sonar] sonar:デフォルトのスキャンルール
-
メモ帳でJavaプログラムをコンパイルして実行すると、Could not find or load main class ...というエラーが表示される。解決方法
-
名前 'XXX' を持つ Bean の作成に失敗しました。自動依存関係の注入に失敗しました 解決方法
-
java.sql.SQLException: 結果セットの開始前
-
配列定数は初期化子でのみ使用可能です。
-
java send https request prompt java.security.cert.について。
-
maven レポート エラー 解決不可能な親POM
-
ApiModel と @ApiModelProperty の使用法