∮explotación≒ 개발

java Switch 에 대한 설명

파란형 2023. 2. 22.
반응형

 

분기  Switch 

그만큼 switch 명령문은 Java 언어로 제공되는 5 가지 제어 흐름 명령문 중 하나입니다. 여러 실행 경로를 허용합니다. switch stature는 selector 변수를 인수로 사용하고이 변수의 값을 사용하여 실행할 경로를 선택합니다.



다음 유형 중에서 선택기 변수 유형을 선택해야합니다

byte, short, char, and int primitive data types
Character, Byte, Short, and Integer wrapper types
enumerated types
the String type.
I

선택기 변수 유형에는 다음과 같은 기본 유형을 사용할 수 없습니다

=>boolean, long, float, double.



첫 번째 예)

int quarter = ...; // any value

String quarterLabel = null;
switch (quarter) {
    case 0: quarterLabel = "Q1 - Winter"; 
            break;
    case 1: quarterLabel = "Q2 - Spring"; 
            break;
    case 2: quarterLabel = "Q3 - Summer"; 
            break;
    case 3: quarterLabel = "Q3 - Summer"; 
            break;
    default: quarterLabel = "Unknown quarter";
};

switch 문은 int 형의 quarter의 값으로 구분하여 각각의 경우에 따라서 출력 후 break 문으로 동작을 중지한다.

단 값이 없을 경우 derault의 값을 출력






배열의 예

int month = 8;
List<String> futureMonths = new ArrayList<>();

switch (month) {
    case 1:  futureMonths.add("January");
    case 2:  futureMonths.add("February");
    case 3:  futureMonths.add("March");
    case 4:  futureMonths.add("April");
    case 5:  futureMonths.add("May");
    case 6:  futureMonths.add("June");
    case 7:  futureMonths.add("July");
    case 8:  futureMonths.add("August");
    case 9:  futureMonths.add("September");
    case 10: futureMonths.add("October");
    case 11: futureMonths.add("November");
    case 12: futureMonths.add("December");
             break;
    default: break;
}

해당예시는 월을 입력받아 각각의 해당하는 월의 이름을 출력한다






다음 코드 예는 명령문이 여러 개를 가질 수있는 방법을 보여줍니다 특정 월의 일 수를 계산합니다

int month = 2;
int year = 2021;
int numDays = 0;

switch (month) {
    case 1: case 3: case 5:   // January March May
    case 7: case 8: case 10:  // July August October
    case 12:
        numDays = 31;
        break;
    case 4: case 6:   // April June
    case 9: case 11:  // September November
        numDays = 30;
        break;
    case 2: // February
        if (((year % 4 == 0) && 
             !(year % 100 == 0))
             || (year % 400 == 0))
            numDays = 29;
        else
            numDays = 28;
        break;
    default:
        System.out.println("Invalid month.");
        break;
}

이 코드에는 둘 이상의 문장이 있습니다 

 

스위치 명령문과 If-then-else 명령문 중에서 선택
if-then-else 진술 또는 switch 명령문은 가독성과 명령문이 테스트하는 표현에 기초합니다. 

if-then-else 명령문은 값 또는 조건의 범위에 따라 표현식을 테스트 할 수 있지만

switch 명령문은 단일 정수, 열거 된 값 또는 String 형의 케이스에 사용한다.





예를 들어 다음 코드는 switch 

int month = ...; // any month
if (month == 1) {
    System.out.println("January");
} else if (month == 2) {
    System.out.println("February");
} ... // and so on





반면에 다음을 다음과 같이 쓸 수 없었습니다,  switch 문장은 유형의 레이블을 지원하지 않습니다 

int temperature = ...; // any temperature
if (temperature < 0) {
    System.out.println("Water is ice");
} else if (temperature < 100){
    System.out.println("Water is liquid, known as water");
} else {
    System.out.println("Water is vapor");
}

 

케이스 라벨의 유형으로 문자열 사용
Java SE 7 이상에서는 String 의 개체 switch 진술의 표현.

다음 코드 예는 다음 값을 기준으로 월 수를 표시합니다 String 명명 된 달.

String month = ...; // any month
int monthNumber = -1;

switch (month.toLowerCase()) {
    case "january":
        monthNumber = 1;
        break;
    case "february":
        monthNumber = 2;
        break;
    case "march":
        monthNumber = 3;
        break;
    case "april":
        monthNumber = 4;
        break;
    case "may":
        monthNumber = 5;
        break;
    case "june":
        monthNumber = 6;
        break;
    case "july":
        monthNumber = 7;
        break;
    case "august":
        monthNumber = 8;
        break;
    case "september":
        monthNumber = 9;
        break;
    case "october":
        monthNumber = 10;
        break;
    case "november":
        monthNumber = 11;
        break;
    case "december":
        monthNumber = 12;
        break;
    default: 
        monthNumber = 0;
        break;
}

그만큼 String 에 switch 표현식은 각각과 관련된 표현식과 비교됩니다 case 마치 String.equals() 방법이 사용되고 있었다. 이 예가 사례에 관계없이 모든 달을 수락하기 위해 월은 소문자 (으로 변환됩니다 toLowerCase() method ) 및 case 라벨은 소문자입니다.

 

널 선택기 변수
선택기 변수 switch 명령문은 객체 일 수 있으므로이 객체는 null 일 수 있습니다. null 선택기 변수로부터 코드를 보호해야합니다.이 경우 스위치 명령문은 NullPointerException. 이 발생한다.


 

 

※ 쿠팡 파트너스 활동을 통해 일정액의 수수료를 제공 받을 수 있습니다 

 

 

 

https://tipoazul.tistory.com/
홈으로

반응형

댓글