스위치, 케이스, 기본값 - 1

"안녕, 아미고!"

"안녕하세요, Bilaabo! 다시 만나서 반가워요. 당신의 강의만 너무 좋고 이해하기 쉽습니다. 이 Java 메모리 모델과는 다릅니다."

"네, Bilaabo는 수업 선택 방법을 알고 있습니다. 오늘은 switch 문에 대해 말씀 드리겠습니다."

"누군가가 이미 나에게 그것에 대해 말한 것 같아요."

"Ellie가 그랬습니다. 그래서 Amigo는 switch 문에 대한 교훈을 듣고 싶지 않습니까? 아마도 당신 자신의 것을 가르치기 시작할 것입니까?"

"아니, 하고 싶어, 하고 싶어. switch 문에 대해 들어보자."

"좋아요. 자바에 switch 문이라는 게 있어요. 어떤 변수의 다양한 값에 따라 어떤 행동을 해야 할 때 편리해요."

스위치의 예 동등한 코드
int i = 5;
switch(i)
{
 case 1:
  System.out.println("one");
  break;
 case 2:
  System.out.println("two");
  break;
 case 3:
  System.out.println("three");
  break;
 default:
  System.out.println("many");
}
int i = 5;
if (i == 1)
{
 System.out.println("one");
}
else if (i == 2)
{
 System.out.println("two");
}
else if (i == 3)
{
 System.out.println("three");
}
else
{
 System.out.println("many");
}

switch 문을 사용하면 전달된 변수가 키워드 case 뒤에 오는 값 일치하는 경우 원하는 코드 부분으로 이동할 수 있습니다.

i가 1이면 실행은 «case 1»로 표시된 줄로 이동합니다.

i가 2이면 실행은 «case 2»로 표시된 줄로 이동합니다.

i가 3이면 실행은 «case 3»이라고 표시된 줄로 이동합니다.

"어떤 경우에도 점프하지 않으면 «default» 블록이 실행됩니다."

"그렇군요. 그리고 오른쪽은 같은 논리지만 if 문을 사용하여 구현한 건가요?"

"네."

"그리고 '브레이크'라는 단어는 무엇입니까? 루프에서만 사용할 수 있다고 했습니까?"

"예, 여기입니다. break 문이 실행되면 즉시 switch 를 종료합니다 ."

"그러나 break 문이 제거되면 스위치 내부의 모든 줄이 끝까지 실행됩니다."

출력(i = 1인 경우) 출력(i = 2인 경우)
switch(i)
{
 case 1:
  System.out.println("one");
 case 2:
  System.out.println("two");
 case 3:
  System.out.println("three");
 default:
  System.out.println("many"); }
하나


많은


많은

"실제로 case는 코드의 레이블입니다. switch 문에서 우리는 다음 레이블로 이동하여 switch가 끝날 때까지 또는 break 문을 만날 때까지 모든 코드를 실행하기 시작합니다."

"따라서 break를 쓰지 않으면 우리가 점프하는 라인이 실행되고 닫는 중괄호까지 다른 모든 라인이 실행됩니다. 맞습니까?"

"예."

"완벽합니다. 하지만 저는 if 문을 사용하는 것이 더 좋습니다. 그들은 이러한 무의미한 break 문을 가지고 있지 않습니다."

"if 문이 종종 더 간결하다는 것은 사실입니다. 그러나 switch 문은 때때로 더 읽기 쉽습니다."

"비교하다:"

스위치의 예 동등한 코드
public String getName(int i)
{
 switch(i)
 {
  case 1:
   return "one";
  case 2:
   return "two";
  case 3:
   return "three";
  default:
   return "many";
}
public String getName(int i)
{
 if (i == 1)
  return "one";

 if (i == 2)
  return "two";

 if (i == 3)
  return "three";

return "many"
}

"나는 그것이 더 읽기 쉽다고 말하지 않을 것입니다."

"알겠습니다. 하지만 이 예는 어떻습니까?"

스위치의 예 동등한 코드
public String getName(int i)
{
 switch(i)
 {
  case 1:
  case 2:
   return "one or two";
  case 3:
  case 4:
  case 5:
   return "three to five";
  default:
   return "many";
}
public String getName(int i)
{
 if (i == 1 || i == 2)
  return "one or two";

 if (i == 3 || i == 4 || i == 5)
  return "three to five";

return "many"
}

"Bilaabo, 귀하의 예가 옳지 않은 것 같습니다. 그래서 return을 사용하면 break 문을 생략할 수 있습니까?"

"그렇습니다. return 문은 즉시 메서드를 종료합니다."

"if 문은 항상 더 간결한 것 같습니다. 하지만 이번에는 switch 문이 더 읽기 쉬운 것으로 판명되었습니다."

"휴, 드디어."

"한 가지 더. 마지막에 기본값을 작성할 필요가 없습니다. 그렇지 않으면 레이블이 일치하지 않으면 아무 일도 일어나지 않습니다."

"어, 정확합니다. if-else와 비슷하지만 읽기 쉽습니다. 훨씬 더 읽기 쉽습니다!"

"좋습니다. 제 수업이 마음에 드셨다니 다행입니다."

"아, 잊을 뻔 했어요. 처음에는 switch 문에서 기본 유형과 열거형만 사용할 수 있었습니다. 하지만 이제 문자열에 대한 지원이 추가되었습니다."

"내가 이것을 쓴다는 말입니까?"

public int getNumber(String number)
{
 switch(number)
 {
  case "one":
   return 1;
  case "two":
   return 2;
  case "three":
   return 3;
  default:
   return -1;
 }
}

"네. 편리하죠?"

"예. Switch 문이 훌륭합니다!"