Programing Language/Java

[Java] 자바의 조건문(Conditional Statements)

vinedpillar 2022. 5. 16. 12:36

if문

  • if문은 조건식의 결과에 따라 실행 여부가 결정됩니다.

  • if문의 구조
if( 조건식 ) {
	
    조건식이 참일 경우 실행할 명령 코드 블럭;
    
}

 

  • if문 사용 방식
    • 조건식에는 참 혹은 거짓을 반환하는 연산식이나 boolean 타입의 변수를 넣을 수 있습니다.
    • 조건식이 참일 경우 중괄호({ ... }) 안의 실행문이 실행됩니다.
      (중괄호 내의 실행문이 하나만 있을 경우 중괄호를 생략할 수 있음)
    • 조건식이 거짓일 경우 실행문을 건너뛰고 if문을 빠져나가게 됩니다.

if문의 사용 예시

// score의 값이 91이므로 "A등급 입니다." 출력
public class IfExample {
    public static void main(String[] args) {
        int score = 91;
        
        if(score >= 90) {
        	System.out.println("A등급 입니다.");
        }
        
        if(score < 90) {
        	System.out.println("B등급 입니다.");
        }
    }
}

 

 

 

 

if-else문

  • if-else문은 조건식의 결과가 참이면  if 부분의의 코드블럭을 실행하고 거짓이면 else 부분의 코드블럭을 실행합니다.

  • 조건식이 거짓일 때 또 다른 분기를 만들기 위해 else if 를 사용하여 또 다른 분기를 만들 수 있습니다.
    (예시 1번)

  • 뒤에 따라붙은 else if의 수는 제한 없이 계속 붙일 수 있습니다.
    (예시 2번)

  • 또한 if문 안에 또 다른 if문을 만들어 if문 내부에서 분기를 만들 수 있습니다.
    (예시 3번)

if-else문 사용 예시1

// score가 79이므로 "B등급 입니다." 출력
public class IfElseExample {
    public static void main(String[] args) {
        int score = 79;
        
        if(score >= 90) {
        	System.out.println("A등급 입니다.");
        }
        else {
        	System.out.println("B등급 입니다.");
        }
    }
}

 

if-else문 사용 예시2

// score가 79이므로 "C등급 입니다." 출력
public class IfElseExample {
    public static void main(String[] args) {
        int score = 79;
        
        if(score >= 90) {
        	System.out.println("A등급 입니다.");
        }
        else if(score >= 80) {
        	System.out.println("B등급 입니다.");
        }
        else if(score >= 70) {
        	System.out.println("C등급 입니다.");
        }
        else if(score >= 60) {
        	System.out.println("D등급 입니다.");
        }
        else {
        	System.out.println("E등급 입니다.");
        }
    }
}

 

if-else문 사용 예시3

// score가 96이므로 "A+등급 입니다." 출력
public class IfElseExample {
    public static void main(String[] args) {
        int score = 96;
        
        if(score >= 90) {
        	if(score >= 95) {
            	System.out.println("A+등급 입니다.");	
            } 
            else {
            	System.out.println("A등급 입니다.");
            }
        }
        else {
        	if(score >= 85) {
            	System.out.println("B+등급 입니다.");
            }
            else {
            	System.out.println("B등급 입니다.");
            }
        }
    }
}

 

 

 

 

switch문

  • if문은 조건식의 평가를 true, false 두 가지로만 할 수 있기 때문에, 경우의 수가 많은 프로그램을 작성하기 위해서는 코드가 복잡해질 수 밖에 없습니다.

  • 반면 switch문은 변수의 출력값에 맞춰 분기를 각각 개별로 만들 수 있기 때문에, if문을 사용하는 것보다 더 간결한 코드를 작성할 수 있습니다. 

  • switch문의 구조
switch문의 구조

switch( 변수 ) {
    case 값1:
    	변수 값이 1일 경우 실행되는 실행문;
    	break;
    
    case 값2:
    	변수 값이 2일 경우 실행되는 실행문;
        break;
    
    case 값3:
    	...
        ...
    
    // 생략 가능
    default:
    	모든 케이스의 값이 아닐 때 실행되는 실행문;
}

 

  • switch문 사용 방식
    • switch문의 괄호( ... )에는 정수 타입(byte, short, int, long), 문자 타입(char), 문자열 타입 변수(String)를 사용할 수 있습니다. 
    • 각 값에 맞는 case를 실행한 후에는 다음 case를 실행하지 않기 위해 break문을 사용하여 switch문을 빠져나와야 합니다.
    • 만약 break문이 없다면 변수 값과 상관없이 다음 case가 연달아서 실행됩니다.
    • 자바 12, 13 부터는 switch문에 추가 기능을 사용할 수 있습니다.
switch문 사용 예시

public class SwitchExamlpe {
	public static void main(String[] args) {
    	char grade = 'B';
        
        // grade가 'B'이므로 "우수 회원입니다." 출력
        switch(grade) {
            case 'A':
           	System.out.println("특별 회원입니다.");
                break;
                
            case 'B':
            	System.out.println("우수 회원입니다.");
                break;
        
            case 'C':
            	System.out.println("일반 회원입니다.");
                break;
                
            default:
           	System.out.println("게스트입니다.");	
        }
    }
}

 

자바 버전에 따른 switch문 활용

public class SwitchExample {
	public static void main(String[] args) {
    	String grade = "B";
        
        // java11 이전 문법
        int score1 = 0;
        switch(grade) {
        	case "A":
            	score1 = 100;
                break;
            
            case "B":
            	int result = 100 - 20;
                score1 = result;
                break;
                
            default:
            	score1 = 60;
        }
        System.out.println("score1: " + score1);
        
        
        // java12 이상부터 활용 가능
        // 표현식(Expressions)으로 활용 가능
        // break문 대신에 -> 기호를 사용하여 가동성 증진
        int score2 = switch(grade) {
        	case "A" -> 100;
            case "B" -> {
            	int result = 100 -20;
                // 자바 13부터 활용 가능
                // yield 키워드는 해당 스위치 블록의 특정 값을 switch의 결과값으로 반환하는 역할
                yield result;
            }   
            default -> 60;
        };
        System.out.println("score = " + score2);
    }
}