logo

Java의 스위치 문

그만큼 Java의 스위치 문 다중 방향 분기 문입니다. 간단히 말해서 Java 스위치 문은 여러 조건에서 하나의 명령문을 실행합니다.

그것은 마치 if-else-if 사다리 진술. 표현식의 값을 기반으로 코드의 다른 부분에 실행을 전달하는 쉬운 방법을 제공합니다. 표현식은 다음과 같습니다. 바이트 , 짧은 , , 또는 정수 원시 데이터 유형. 여러 값에 대해 변수의 동등성을 테스트합니다.



메모: Java 스위치 표현식은 byte, short, int, long(Wrapper 유형 포함), 열거형 및 문자열이어야 합니다. JDK7부터는 열거 유형( 열거형 자바에서는) 수업, 그리고 싸개 클래스.

통사론

switch(expression) {  case value1 :  // Statements  break; // break is optional    case value2 :  // Statements  break; // break is optional  ....  ....  ....  default :   // default Statement }>

예:

크기 프린터 예

자바
public class SizePrinter {  public static void main(String[] args) {  int sizeNumber = 2; // Replace with your desired size (1, 2, 3, 4, or 5)  switch (sizeNumber) {  case 1:  System.out.println('Extra Small');  break;  case 2:  System.out.println('Small');  break;  case 3:  System.out.println('Medium');  break;  case 4:  System.out.println('Large');  break;  case 5:  System.out.println('Extra Large');  break;  default:  System.out.println('Invalid size number');  }  } }>

산출:



Small>

Java Switch 문에 대한 몇 가지 중요한 규칙

  1. 조건 확인만 적용하는 경우는 얼마든지 있을 수 있지만 중복된 사례 값은 허용되지 않는다는 점을 기억하세요.
  2. 케이스 값은 스위치의 변수와 동일한 데이터 유형이어야 합니다.
  3. 케이스 값은 상수이거나 리터럴이어야 합니다. 변수는 허용되지 않습니다.
  4. break 문은 스위치 내부에서 명령문 시퀀스를 종료하는 데 사용됩니다.
  5. break 문은 선택 사항입니다. 생략하면 다음 케이스로 실행이 계속됩니다.
  6. 기본 문은 선택 사항이며 스위치 블록 내부 어디에나 나타날 수 있습니다. Case의 경우 끝이 아닌 경우에는 기본 문 뒤에 반드시 break 문을 유지하여 다음 Case 문의 실행을 생략해야 합니다.
  Note: Until Java-6, switch case argument cannot be of String type but Java 7 onward we can use String type argument in Switch Case.>

Switch-Case 문의 흐름도

이 순서도는 스위치 문의 제어 흐름과 작동을 보여줍니다.

Java의 스위치 명령문 흐름도

메모: Java 스위치 문은 fall through 문입니다. 즉, 다음과 같은 경우 모든 문을 실행합니다. 브레이크 키워드 는 사용되지 않으므로 각 경우마다 break 키워드를 사용하는 것이 매우 중요합니다.



예: 찾는 날

다음 Java 프로그램을 고려하면 값이 일(1-7)을 나타내는 int 이름의 day를 선언합니다. 이 코드는 switch 문을 사용하여 날짜 값에 따라 날짜 이름을 표시합니다.

자바
// Java program to Demonstrate Switch Case // with Primitive(int) Data Type // Class public class GFG {  // Main driver method  public static void main(String[] args)  {  int day = 5;  String dayString;  // Switch statement with int data type  switch (day) {  // Case  case 1:  dayString = 'Monday';  break;  // Case  case 2:  dayString = 'Tuesday';  break;  // Case  case 3:  dayString = 'Wednesday';  break;  // Case  case 4:  dayString = 'Thursday';  break;  // Case  case 5:  dayString = 'Friday';  break;  // Case  case 6:  dayString = 'Saturday';  break;  // Case  case 7:  dayString = 'Sunday';  break;  // Default case  default:  dayString = 'Invalid day';  }  System.out.println(dayString);  } }>

산출
Friday>

스위치 케이스 문에서 중단

break 문 선택 사항입니다. 중단을 생략하면 다음 사례로 실행이 계속됩니다.

때로는 없이 여러 사례를 갖는 것이 바람직할 때도 있습니다. 부서지다 그들 사이의 진술. 예를 들어, 위 프로그램의 업데이트된 버전을 고려해 보겠습니다. 이 버전은 해당 날짜가 평일인지 주말인지도 표시합니다.

예:

여러 번의 중단이 없는 Switch 문 프로그램

산업과 공장
자바
// Java Program to Demonstrate Switch Case // with Multiple Cases Without Break Statements // Class public class GFG {  // main driver method  public static void main(String[] args)  {  int day = 2;  String dayType;  String dayString;  // Switch case  switch (day) {  // Case  case 1:  dayString = 'Monday';  break;  // Case  case 2:  dayString = 'Tuesday';  break;  // Case  case 3:  dayString = 'Wednesday';  break;  case 4:  dayString = 'Thursday';  break;  case 5:  dayString = 'Friday';  break;  case 6:  dayString = 'Saturday';  break;  case 7:  dayString = 'Sunday';  break;  default:  dayString = 'Invalid day';  }  switch (day) {  // Multiple cases without break statements  case 1:  case 2:  case 3:  case 4:  case 5:  dayType = 'Weekday';  break;  case 6:  case 7:  dayType = 'Weekend';  break;  default:  dayType = 'Invalid daytype';  }  System.out.println(dayString + ' is a ' + dayType);  } }>

산출
Tuesday is a Weekday>

Java 중첩 스위치 문

우리는 스위치 ~처럼 명령문 시퀀스의 일부 ~의 외부 스위치. 이것은 중첩 스위치 . switch 문은 해당 블록을 정의하므로 내부 스위치의 대소문자 상수와 외부 스위치의 대소문자 상수 간에 충돌이 발생하지 않습니다.

예:

중첩된 Switch 문

자바
// Java Program to Demonstrate // Nested Switch Case Statement // Class public class GFG {  // Main driver method  public static void main(String[] args)  {  // Custom input string  String Branch = 'CSE';  int year = 2;  // Switch case  switch (year) {  // Case  case 1:  System.out.println(  'elective courses : Advance english, Algebra');  // Break statement to hault execution here  // itself if case is matched  break;  // Case  case 2:  // Switch inside a switch  // Nested Switch  switch (Branch) {  // Nested case  case 'CSE':  case 'CCE':  System.out.println(  'elective courses : Machine Learning, Big Data');  break;  // Case  case 'ECE':  System.out.println(  'elective courses : Antenna Engineering');  break;  // default case  // It will execute if above cases does not  // execute  default:  // Print statement  System.out.println(  'Elective courses : Optimization');  }  }  } }>

산출
elective courses : Machine Learning, Big Data>

Switch 문의 Java Enum

열거형(enums)은 강력하고 명확한 방법입니다. 명명된 상수의 고정된 집합을 나타냅니다. 자바에서.

열거형은 유형 안전성과 가독성으로 인해 Switch 문에 사용됩니다.

예:

Switch에서 Enum 사용

자바
// Java Program to Illustrate Use of Enum // in Switch Statement // Class public class GFG {  // Enum  public enum Day { Sun, Mon, Tue, Wed, Thu, Fri, Sat }  // Main driver method  public static void main(String args[])  {  // Enum  Day[] DayNow = Day.values();  // Iterating using for each loop  for (Day Now : DayNow) {  // Switch case  switch (Now) {  // Case 1  case Sun:  System.out.println('Sunday');  // break statement that hault further  // execution once case is satisfied  break;  // Case 2  case Mon:  System.out.println('Monday');  break;  // Case 3  case Tue:  System.out.println('Tuesday');  break;  // Case 4  case Wed:  System.out.println('Wednesday');  break;  // Case 5  case Thu:  System.out.println('Thursday');  break;  // Case 6  case Fri:  System.out.println('Friday');  break;  // Case 7  case Sat:  System.out.println('Saturday');  }  }  } }>

산출
Sunday Monday Tuesday Wednesday Thursday Friday Saturday>

Java Switch Case의 기본 문

Switch 케이스의 기본 케이스는 일치하는 케이스가 없을 때 실행할 코드를 지정합니다.

가능한 모든 Case의 마지막에 Default Case를 작성하는 것이 바람직하지만, switch 문의 어느 위치에나 작성할 수 있습니다.

예:

스위치 문 중간에 기본값 작성:

자바
/*package whatever //do not write package name here */ import java.io.*; class GFG {  public static void main (String[] args) {  int i=2;  switch(i){  default:  System.out.println('Default');  case 1:  System.out.println(1);  break;  case 2:  System.out.println(2);  case 3:  System.out.println(3);    }  } }>

산출
2 3>

예:

스위치 문 시작 시 기본값 쓰기

자바
import java.io.*; class GFG {  public static void main(String[] args)  {  int i = 5;  switch (i) {  default:  System.out.println('Default');  case 1:  System.out.println(1);  break;  case 2:  System.out.println(2);  case 3:  System.out.println(3);  }  } }>

산출
Default 1>

케이스 라벨 변형

Case 레이블과 스위치 인수는 상수 표현식일 수 있습니다. 스위치 인수는 변수 표현식일 수 있습니다.

예:

변수 스위치 인수를 사용합니다.

자바
import java.io.*; class GFG {  public static void main(String[] args)  {  int x = 2;  switch (x + 1) {  case 1:  System.out.println(1);  break;  case 1 + 1:  System.out.println(2);  break;  case 2 + 1:  System.out.println(3);  break;  default:  System.out.println('Default');  }  } }>

산출
3>

케이스 레이블은 변수 또는 변수 표현식일 수 없습니다. 상수 표현식이어야 합니다.

자바
import java.io.*; class GFG {  public static void main(String[] args)  {  int x = 2;  int y = 1;  switch (x) {  case 1:  System.out.println(1);  break;  case 2:  System.out.println(2);  break;  case x + y:  System.out.println(3);  break;  default:  System.out.println('Default');  }  } }>
./GFG.java:16: error: constant expression required  case x+y:  ^ 1 error>

Switch 문의 Java 래퍼

Java는 4가지를 제공합니다. 래퍼 클래스 사용 방법: switch 문에 Integer, Short, Byte, Long을 사용합니다.

예:

스위치 케이스의 Java 래퍼.

자바
public class WrapperSwitchExample {  public static void main(String[] args) {  Integer age = 25;  switch (age.intValue()) { // Extract primitive value for switch  case 25:  System.out.println('You are 25.');  break;  case 30:  System.out.println('You are 30.');  break;  default:  System.out.println('Age not matched.');  }  } }>

산출:

You are 25.>

메모:

배치에 관계없이 기본 케이스는 다른 케이스 조건이 충족되지 않는 경우에만 실행됩니다. 따라서 시작, 중간 또는 끝에 배치해도 핵심 논리는 변경되지 않습니다(폴스루라는 덜 일반적인 기술을 사용하지 않는 한).

예: 이 코드에서는 (1-7) 숫자까지 평일을 식별합니다.

자바
import java.util.Scanner; public class Main {  public static void main(String[] args) {  Scanner scanner = new Scanner(System.in);  System.out.print('Enter a day number (1-7): ');  int day = scanner.nextInt();  switch (day) {  default:  System.out.println('Not a valid weekday.');  break;  case 1:  System.out.println('It's Monday!');  break;  case 2:  System.out.println('It's Tuesday!');  break;  case 3:  System.out.println('It's Wednesday!');  break;  case 4:  System.out.println('It's Thursday!');  break;  case 5:  System.out.println('It's Friday!');  break;  case 6:  System.out.println('It's Saturday!');  break;  case 7:  System.out.println('It's Sunday!');  break;  }  } }>

산출

Enter a day number (1-7): 8 Not a valid weekday.>


더 읽어보기:

  • Java에서 Enum 및 Switch 키워드 사용
  • Java의 Switch Case 문자열
  • 자바 튜토리얼

운동

Java 스위치 문을 연습하려면 다음 페이지를 방문하세요. 자바 스위치 Case문 연습

결론

Java의 Switch 문은 단일 표현식의 값을 기반으로 특정 코드 블록을 실행할 수 있는 제어 흐름 구조입니다. 프로그래밍에서 if-else-if 문의 대안으로 간주될 수 있습니다.

Java 스위치 설명 - FAQ

Java에서 스위치 문을 사용하는 방법

Java에서 스위치 문을 사용하려면 다음 구문을 사용할 수 있습니다.

스위치(표현식) {
사례 값1:
// 표현식이 value1과 같을 때 실행할 코드
부서지다;
사례 값2:
// 표현식이 value2와 같을 때 실행할 코드
부서지다;
// ... 더 많은 경우
기본:
// 위의 경우 중 일치하는 것이 없을 때 실행할 코드
}

스위치에 null을 전달할 수 있나요?

아니요, 스위치 문에는 상수 표현식이 필요하므로 NULL을 전달할 수 없습니다.

switch 문으로 돌아갈 수 있나요?

아니요, 스위치 문은 프로그램에서 제어 흐름을 구축하므로 스위치 케이스를 종료한 후에는 돌아갈 수 없습니다.