4.1.3スイッチ選択制御扉
26271 ワード
switch文は、ジャンプ位置変数値に基づいて特定の位置(case)に移動して文を実行する選択制御文である.ジャンプ可能な位置は「case witch値:」に設定されています.これにより、クローン(:)文字の値を移動する位置を指す看板と見なすことができます.case構文に加えてdefault:構文はif文のelse構文機能と類似しており、一致するシフト値がない場合にジャンプする位置を表す.default文は省略できます.
スイッチドアの構造
switch文を使用してジャンプする例
では、switch文もif文のように1つの実行文だけを実行することはできませんか?breakを使用してキーワードを制御すればいいです.制御キーワードは後述するが、ここで「break」は「if文以外の最も近い括弧({})」から逃れるキーワードであることを覚えておいてください.つまり、switchドアでbreakに遭遇するとswitchドアから逃げるということです.次の例では、次の結果を示します.
breakキーワードを含むswitch文の例
スイッチゲートを使用した7点以上のPass出力例1
swhitch文を用いた7点以上のPass出力例2
swtich文と同じ機能を実行するif文
switch文(break、break、if文変換を除く)
スイッチドアの構造
switch(점프 위치 변수) { // 점프 위치 변수 : 정수, 문자. 문자열 사용 가능
case 위칫값 1 : //점프 위치 변수 = 위칫값 1이면 이 위치로 이동
실행 구문;
case 위칫값 2 : //점프 위치 변수 = 위칫값 2이면 이 위치로 이동
실행 구문;
...
case 위칫값 n : //점프 위치 변수 = 위칫값 n이면 이 위치로 이동
default: //일치하는 위칫값이 없을 때 이 위치로 이동
실행구문; // default ~ : 생략 가능
}
もう一度言いますが、スイッチドアの役割は特定の位置に移動することです.したがって,動作はif文とはやや異なる.次の例を示します.switch文を使用してジャンプする例
int a = 2;
switch(a) {
case 1:
System.out.println("A");
case 2: // switch(a)에 따라 case 2:로 이동한 후 차례대로 구문 실행
System.out.println("B"); // 실행됨
case 3:
System.out.println("C"); // 실행됨
default:
System.out.println("D"); //실행됨
}
a値が2であるため,switch文の役割は実行順序をcase 2:に移動することである.これが全てです.次に、元のプログラム実行順に1行行います.だからB,C,Dは出力されます.ここでcase 2:構文はコマンドを実行するのではなく、位置決めカードにすぎず、操作を実行しません.これは、条件式がtrueの最初のブロックのみを実行するif文とは異なります.では、switch文もif文のように1つの実行文だけを実行することはできませんか?breakを使用してキーワードを制御すればいいです.制御キーワードは後述するが、ここで「break」は「if文以外の最も近い括弧({})」から逃れるキーワードであることを覚えておいてください.つまり、switchドアでbreakに遭遇するとswitchドアから逃げるということです.次の例では、次の結果を示します.
breakキーワードを含むswitch文の例
int a = 2;
switch (a) {
case 1:
System.out.println("A");
break;
case 2: //switch(a)에 따라 이동되는 위치
System.out.println("B"); // 실행됨
break; // switch 문을 탈출
case 3:
System.out.println("C");
break;
default:
System.out.println("D");
}
switch(a)は、実行順序をcase 2に移動し、「B」を出力する.「それからbreakに出会って、switchドアを出ます.」case構文を作成するときにbreak機能が含まれていればよかったのに...そう思う人もいます.でも、わざわざ休憩時間を外して番組を作っている人もいます.例えば、10点満点で7点以上の人が「Pass」、残りの人が「Fail」と出力します.スイッチゲートを使用した7点以上のPass出力例1
int a = 8;
switch(a) {
case 10;
System.out.println("Pass"); break;
case 9;
System.out.println("Pass"); break;
case 8;
System.out.println("Pass"); break; // 실행한 후 switch 문 탈출
case 7;
System.out.println("Pass"); break;
default:
System.out.println("Fail");
}
一目で重複コードが多く、効率が悪いことがわかります.これは、case文ごとにpassまたはfailを出力するコマンドが1つしか実行されないため、case文ごとに数十の操作が実行されると、コードの重複性がさらに深刻になります.1つの実行文に複数のcaseを指定すると、次の例に示すように、case文ごとにbreakキーを追加するのではなく、コードをより簡潔に記述できます.swhitch文を用いた7点以上のPass出力例2
int a = 8;
switch(a) {
case 10:
case 9:
case 8:
case 7:
System.out.prinltn("Pass"); break;
default:
System.out.prinltn("Fail");
switch文は整数、文字、文字列のみを使用できる擬似値であり、if文は条件式の様々な比較演算子と論理演算子を使用できるため、効率的に異なる場合がありますが、基本的にswitch文はif文と変換できます.switch文とif文の動作原理を知れば,変換自体はそれほど難しくない.次の例は、switch文を用いて記述されたコードを、同じ機能を実行するif文のコードに変換する例である.swtich文と同じ機能を実行するif文
int a = 8;
//switch 문
swtich(a) {
case 10:
case 9:
System.out.println("A");
break;
case 8:
System.out.println("B"); // 실행한 후 탈출
break;
case 7:
System.out.println("C");
break;
default:
Sysstem.out.println("D");
}
//if문
if(a >= 9) {
System.out.println("A");
}
else if (a == 8) {
System.out.println("B"); // 실행한 후 탈출
else if (a == 7) {
System.out.println("C");
else {
System.out.println("D");
}
では、switch文とif文の間にはどのようなパフォーマンスの違いがありますか?まず答えを言うと、全体の速度の差はほとんどありません.しかし、各結果には速度の差があります.たとえば、上記のif文では、「A」出力時に条件式が1つしかチェックされず、出力されます.「C」または「D」出力時には、3つの条件式を比較して出力されます.このため、100万個の「A」出力と100万個の「C」出力との間に速度が発生する可能性がある.逆に、スイッチドアの利点は、「A」を出力しても「C」を出力しても「D」を出力しても、1回のジャンプ運転のみが実行されるため、すべての出力速度が同じであることである.しかし、条件式の検査速度は非常に速く、数百万個のデータを一度に処理しない場合は、どれを使っても構わない.実習
switch文(break、break、if文変換を除く)
//break가 포함되지 않았을 때
int value1 = 2;
switch (value1) {
case 1:
System.out.println("A");
case 2:
System.out.println("B"); //점프한 후 계속 실행
case 3:
System.out.println("C");
default:
System.out.println("D");
}
System.out.println();
//break가 포함되어 있을 때
int value2 = 2;
switch(value2) {
case 1:
System.out.println("A");
break;
case 2:
System.out.println("B"); // 실행한 후 탈출
break;
case 3:
System.out.println("C");
break;
default:
System.out.println("D");
}
System.out.println();
//if - else if - else 구문으로 변환
if(value1 ==1) {
System.out.println("A");
}
else if(value1 == 2) {
System.out.println("B"); // 실행한 후 탈출
}
else if(value1 == 3) {
System.out.println("C");
}
else{
System.out.println("D");
}
結果Reference
この問題について(4.1.3スイッチ選択制御扉), 我々は、より多くの情報をここで見つけました https://velog.io/@1205kjw/4.1.3-switch-선택-제어문-3z1r4rlcテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol