JavaのSwitchケースとは何ですか?その使用方法は?
公開: 2022-03-04Javaのswitchケースは、プログラミング言語に何をすべきかを指示する多くのJavaステートメントの1つです。 テキストの完全な概念を提供し、句を含む英語の文のように、Javaステートメントは、Javaインタープリターが実行する1つ以上の式を含むコマンドです。 簡単に言うと、Javaステートメントは何が起こるべきかを説明する命令です。
Javaステートメントはセミコロン(;)で終わり、そのセミコロンまでの命令を処理するようにJavaに指示します。 デフォルトでは、Javaインタープリターはステートメントが書き込まれる順序に従い、ステートメントを次々に実行します。 ただし、ループや条件など、プログラムフローを制御するステートメント(flow-controlステートメント)は、デフォルトの実行順序に従いません。 この記事では、そのようなタイプの選択制御メカニズムの1つであるJavaswitchcaseステートメントに焦点を当てます。
目次
Javaのswitchケースとは何ですか?
Javaは、変数の値を変更するための式ステートメント、メソッドを呼び出してオブジェクトを作成するための式ステートメント、変数を宣言するための宣言ステートメント、およびステートメントの実行順序を決定するための制御フローステートメントの3種類のステートメントをサポートします。
Javaのswitchcaseステートメントは、式または変数の値が多方向分岐を介してプログラム実行の制御フローを変更できるようにする、一種の制御フローステートメントです。 if-thenおよびif-then-elseステートメントとは対照的に、Javaswitchステートメントにはいくつかの実行パスがあります。 Javaのswitchcaseは、short、byte、int、およびcharのプリミティブデータ型で機能します。 JDK7から、Javaスイッチは、Stringクラス、列挙型、およびByte、Character、Integer、Shortなどのプリミティブデータ型をラップするWrapperクラスでも使用できます。
Javaのswitchcaseステートメントの本体は、スイッチブロックと呼ばれます。 スイッチブロック内のすべてのステートメントは、1つ以上のケースまたはデフォルトのラベルを使用してラベル付けされます。 したがって、switchステートメントはその式を評価し、続いて一致する大文字と小文字のラベルに続くすべてのステートメントを実行します。
以下に、switchcaseステートメントの構文を示します。
//switchステートメント
switch(expression)
{{
//ケースステートメント
//値は同じタイプの式である必要があります
ケース値1:
//ステートメント
壊す; //ブレークはオプションです
ケース値2:
//ステートメント
壊す; //ブレークはオプションです
//任意の数のcaseステートメントを持つことができます
//以下はデフォルトのステートメントであり、いずれの場合も当てはまらない場合に使用されます。
//デフォルトの場合、ブレークは必要ありません。
ディフォルト :
//ステートメント
}
Javaswitchステートメントの例
次のJavaコード例では、「month」という名前のintを宣言しています。この値は、1年の12か月のうちの1つを表します。 このコードは、switch caseステートメントを使用して、月の値に基づいて月の名前を表示します。
パブリッククラスSwitchExample{
public static void main(String [] args){
int月=6;
文字列monthString;
スイッチ(月){
ケース1:monthString =“ January”;
壊す;
ケース2:monthString =“ February”;
壊す;
ケース3:monthString =“ March”;
壊す;
ケース4:monthString =“ April”;
壊す;
ケース5:monthString =“ May”;
壊す;
ケース6:monthString =“ June”;
壊す;
ケース7:monthString =“ July”;
壊す;
ケース8:monthString =“ August”;
壊す;
ケース9:monthString =“ September”;
壊す;
ケース10:monthString =“ October”;
壊す;
ケース11:monthString =“ November”;
壊す;
ケース12:monthString =“ December”;
壊す;
デフォルト:monthString =“無効な月”;
壊す;
}
System.out.println(monthString);
}
}
出力:6月
Javaスイッチの場合のbreakステートメントの目的
breakステートメントは、囲んでいるswitchステートメントを終了するJavaswitchケースの重要な側面です。 breakステートメントがないと、switchブロックのステートメントが失敗するため、breakステートメントが必要です。 したがって、後続のcaseラベルの式に関係なく、一致するcaseラベルの後のすべてのステートメントは、breakステートメントが検出されるまで順次実行されます。
次のコードは、breakステートメントがない場合にスイッチブロックがフォールスルーすることを示す例です。
パブリッククラスSwitchExampleFallThrough{
public static void main(String [] args){
java.util.ArrayList <String> futureMonths =
new java.util.ArrayList <String>();
int月=6;
スイッチ(月){
ケース1:futureMonths.add( "January");
ケース2:futureMonths.add( "February");
ケース3:futureMonths.add( "March");
ケース4:futureMonths.add( "April");
ケース5:futureMonths.add( "May");
ケース6:futureMonths.add( "June");
ケース7:futureMonths.add( "July");
ケース8:futureMonths.add( "August");
ケース9:futureMonths.add( "September");
ケース10:futureMonths.add( "October");
ケース11:futureMonths.add( "November");
ケース12:futureMonths.add( "December");
壊す;
デフォルト:ブレーク;
}
if(futureMonths.isEmpty()){
System.out.println( "無効な月番号");
} そうしないと {
for(String monthName:futureMonths){
System.out.println(monthName);
}
}
}
}
出力:
六月
7月
8月
9月
10月
11月
12月
上記のコードは、整数の月に対応する年の月とそれに続く月を表示します。 ここでは、フローがswitchステートメントから外れるため、finalbreakステートメントは目的を果たしません。 breakステートメントを使用すると、コードでエラーが発生しにくくなり、変更が容易になるため、便利です。 コードのデフォルトセクションは、ケースセクションのいずれによっても規制されていないすべての値を処理します。
複数の大文字小文字ラベルを含むJavaswitchステートメント
JavaのSwitchステートメントには、複数のcaseラベルを付けることもできます。 次のコードは同じことを示しています。ここでは、その年の特定の月の日数が計算されます。
クラスSwitchMultiple{
public static void main(String [] args){
int月=2;
int year = 2020;
int numDays = 0;
スイッチ(月){
ケース1:ケース3:ケース5:
ケース7:ケース8:ケース10:
ケース12:
numDays = 31;
壊す;
ケース4:ケース6:
ケース9:ケース11:
numDays = 30;
壊す;
ケース2:
if(((year%4 == 0)&&
!(年%100 == 0))
|| (年%400 == 0))
numDays = 29;
そうしないと
numDays = 28;
壊す;
ディフォルト:
System.out.println( "無効な月。");
壊す;
}
System.out.println(“日数="
+ numDays);
}
}
出力:
日数=29
ネストされたJavaswitchcaseステートメント
ネストされたスイッチは、外部スイッチの一連のステートメントの一部としてスイッチを使用する場合です。 この場合、switchステートメントは独自のブロックを定義するため、他のスイッチのcase定数と内部スイッチのcase定数の間に競合はありません。
次の例は、ネストされたJavaswitch-caseステートメントの使用法を示しています。
パブリッククラスTestNest{
public static void main(String [] args)
{{
文字列ブランチ="CSE";
int year = 2;
スイッチ(年){
ケース1:
System.out.println( "選択科目:代数、上級英語");
壊す;
ケース2:
switch(Branch)//ネストされたスイッチ
{{
ケース「CSE」:
ケース「CCE」:
System.out.println( "選択科目:ビッグデータ、機械学習");
壊す;
ケース「ECE」:
System.out.println( "選択科目:アンテナエンジニアリング");
壊す;
ディフォルト:
System.out.println( "選択科目:最適化");
}
}
}
}
出力:
選択科目:ビッグデータ、機械学習
switchステートメントでの文字列の使用
JDK7以降では、switchステートメントの式でStringオブジェクトを使用できます。 switchステートメントの式の文字列オブジェクトと各ケースラベルの関連する式との比較は、String.equalsメソッドを使用しているかのように行われます。 また、switchステートメント式での文字列オブジェクトの比較では大文字と小文字が区別されます。
次のコード例は、「game」という名前の文字列の値に基づいたゲームのタイプを示しています。
パブリッククラスStringInSwitchStatementExample{
public static void main(String [] args){
文字列ゲーム=「クリケット」;
スイッチ(ゲーム){
ケース「バレーボール」:ケース「フットボール」:ケース「クリケット」:
System.out.println( "これは屋外ゲームです");
壊す;
ケース「カードゲーム」:ケース「チェス」:ケース「パズル」:ケース「屋内バスケットボール」:
System.out.println( "これは屋内ゲームです");
壊す;
ディフォルト:
System.out.println( "それはどのゲームですか?");
}
}
}
出力:
これは屋外ゲームです
Javaswitchステートメントを使用するときに覚えておくべきルール
Javaのswitchステートメントを使用するときは、特定のルールを念頭に置いておくとよいでしょう。 以下は同じもののリストです:
- ケースの値とスイッチの変数は、同じデータ型である必要があります。
- Javaのswitchステートメントでは、大文字と小文字の値を重複させることはできません。
- ケース値はリテラルまたは定数である必要があります。 変数は許可されていません。
- スイッチ内でbreakステートメントを使用すると、ステートメントシーケンスが終了します。
- breakステートメントはオプションであり、それを省略すると、後続のケースまで実行が続行されます。
- デフォルトのステートメントもオプションであり、スイッチブロック内のどこでも発生する可能性があります。 最後に配置されていない場合は、デフォルトのステートメントの後にbreakステートメントを追加して、後続のcaseステートメントの実行をスキップする必要があります。
今後の方向性
Javaは、プログラマーと開発者の間で比類のない人気があり、今日最も需要の高いプログラミング言語の1つです。 言うまでもなく、進化し続ける求人市場に向けてスキルアップしたい新進の開発者やソフトウェアエンジニアは、Javaスキルを強化する必要があります。
upGradのソフトウェアエンジニアリングにおけるジョブリンクPG認定は、コーディングを学び、エントリーレベルのソフトウェアの役割に就きたいと考えている新入生および最終学年の候補者向けに特別に設計されています。
5か月のオンラインコースに何が含まれるのか疑問に思っている場合は、次のハイライトを参考にしてください。
- MERNスタックとクラウドネイティブスペシャライゼーションを獲得する
- Java、DSA、CSS3、HTML5、AWS、MERN、SQL、NoSQLデータベースなどのトップスキルを学ぶ
- 500時間以上のコンテンツと350時間以上のハンズオントレーニング
- 5つの業界プロジェクトと50以上のライブセッション
- 配置の準備とキャリアガイダンス
- ディスカッションフォーラムと強力なピアネットワーク
ソフトウェアエンジニアリングの有望なキャリアに向けて旅を始めたいのであれば、ここで最高のものから学ぶチャンスがあります。
1. switchステートメントの場合は何ですか?
Javaのswitchステートメントを使用すると、値のリストに対する変数の等価性をテストできます。 ここでは、各値をケースと呼び、オンになっている変数がケースごとにチェックされます。
2.スイッチケースの利点は何ですか?
従来のif-elseカスケードに対するJavaswitchcaseステートメントの主な利点は、前者を使用すると、プログラマーがよりコンパクトで明確で読みやすいコードを記述できることです。 一方、if-elseステートメントには、多くの場合、多くのコードの繰り返しが含まれます。 したがって、コードの特定の部分を変更したい場合は、他の場所で変更を加える必要があります。 この時間のかかるエラーが発生しやすいプロセスを回避するには、スイッチケースを使用することをお勧めします。
3.スイッチケースとif-elseの違いは何ですか?
switchステートメントの場合、breakキーワードが検出されるか、デフォルトのステートメントが実行されるまで、caseが次々に実行されます。 逆に、if-elseステートメントの場合、条件に応じて「if」または「else」ブロックのいずれかが実行されます。