これが私のコードです:
int x = 10;
switch(x) {
case 10:
System.out.println("10");
break;
case 5+5:
System.out.println("5+5");
break;
}
この場合、どちらの場合も真ですが、何が実行されますか? 最初のケース、または両方?
これが私のコードです:
int x = 10;
switch(x) {
case 10:
System.out.println("10");
break;
case 5+5:
System.out.println("5+5");
break;
}
この場合、どちらの場合も真ですが、何が実行されますか? 最初のケース、または両方?
case
無効です: 5+5 は 10 に解決され、同じ定数を持つ 2 つの句を持つことはできません。
として5+5
コンパイルされている10
ため、コードには重複した条件が含まれています。これは、Java の switch ステートメントでは無効です。
仕様から:
switch ステートメントに関連付けられた case 定数式の 2 つが同じ値を持つことはできません。
したがって、誰も「実行を説明する」ことはできません。実行はありません。
switch ブロック内の各 case ステートメントは一意である必要があります。case 10
とcase 5 + 5
は同じものであるため、コードはコンパイルされません。
「重複ケース」エラーが発生します。
あなたのコメントによると、これはあなたが観察した問題です。
説明は、コンパイラによってコンパイル時に5+5
評価されるということです。つまり、同じ値を持つ2つのケースブランチがあることを意味します。10
これは許可されていません (コードはどれを取るべきですか?)