웹(WEB)/자바(JAVA)

[Java] 자바 조건문 if, switch

마달랭 2024. 12. 27. 21:17
반응형

개요

자바에서 사용하는 조건문 if, switch에 대해서 알아보자

 

 

if문

if문의 작성법은 C/C++/C#/JS 등과 동일하다.

public class Main {
    public static void main(String[] args) {
        int a = 1;
        if (a % 2 == 0) System.out.println("even");
        else System.out.println("odd");
    }
}

 

 

switch문

여러가지 값 비교시 사용된다. 이 역시 타 언어와 동일하다.

case를 따지기 위한 값은 반드시 정수형이거나 String 형태여야 한다.

 * String타입의 케이스 체크는 jdk 7이상 버전부터 가능하다.

 * 정수형 중 long타입은 switch문에서 조건을 판별할 수 없다.

 

또한 각 케이스를 체크한 후에는 break처리를 해야 누수가 발생하지 않는다.

 

public class Main {
    public static void main(String[] args) {
        int a = 3;
        switch (a) {
            case 1:
                System.out.println("1");
                break;
            case 2:
                System.out.println("2");
                break;
            default:
                System.out.println("3");
        }
    }
}

 

public class Main {
    public static void main(String[] args) {
        String a = "Apple";
        switch (a) {
            case "Ant":
                System.out.println("case 1");
                break;
            case "Apple":
                System.out.println("case 2");
                break;
            default:
                System.out.println("default case");
        }
    }
}

 

 

switch문(2)

switch문의 또다른 활용법으로 표현식 자체가 값을 반환할 수 있다, 이는 자동으로 break처리가 된다.

  • 실행할 라인이 1줄인 경우 :를 빼고 ->를 이용해 처리할 수 있다.
  • 만약 block을 구성해야 하는 경우 yield 키워드를 사용해 준다.(block에서만 사용)
  • 동일하게 처리되는 여러 조건을 쉼표로 구분하여 한 라인에서 처리 가능하다.

 * 해당 기능은 자바 12이상의 버전에서 사용 가능하다.

 

1. 간결한 switch 표현식

public class Main {
    public static void main(String[] args) {
        int day = 3;

        String result = switch (day) {
            case 1 -> "월요일";
            case 2 -> "화요일";
            case 3 -> "수요일";
            default -> "알 수 없음";
        };
        
        System.out.println(result);  // "수요일"
    }
}

 

  • ->(화살표 연산자) 사용
  • switch 문 자체가 값을 반환하여 변수에 직접 대입
  • break 문이 필요 없음

 

2. 여러 값 처리

public class Main {
    public static void main(String[] args) {
        int score = 85;

        String grade = switch (score / 10) {
            case 10, 9 -> "A";
            case 8 -> "B";
            case 7 -> "C";
            case 6 -> "D";
            default -> "F";
        };

        System.out.println(grade);  // "B"
    }
}

 

3. 블록 사용 (복잡한 로직 포함)

public class Main {
    public static void main(String[] args) {
        int day = 5;

        String result = switch (day) {
            case 1, 2, 3 -> "주중";
            case 4, 5 -> {
                System.out.println("거의 주말입니다.");
                yield "주중";  // 값을 반환할 때 yield 사용
            }
            case 6, 7 -> "주말";
            default -> "알 수 없음";
        };

        System.out.println(result);  // "거의 주말입니다." 이후 "주중" 출력
    }
}

 

  • yield: 블록에서 값을 반환할 때 사용
  • 복잡한 작업이 필요할 경우 블록 {}을 사용할 수 있음

 

 

728x90
반응형