4-1. 조건문

Hyun Jun·2022년 1월 22일
0

자바의 정석

목록 보기
15/52
post-thumbnail
post-custom-banner

조건문

조건문은 조건식에 따라 블럭{} 안의 코드를 실행할지 말지 정할 수 있어 프로그램의 실행 흐름을 제어하는 데에 도움을 줌.

if문과 switch문 2가지 종류가 있고, 일반적으로는 if문을 많이 사용.

 

if 문

if (조건식) {
    // 수행할 코드
}

조건식이 true일 때 블럭{} 안의 코드를 수행하게끔 함.

조건식 안에는 앞 챕터에서 다뤘던 비교 연산자논리 연산자를 사용하여 작성함. (조건식의 평가 결과가 무조건 true 또는 false여야 하기 때문)

 

블럭{} 내의 문장이 하나뿐인 경우, 중괄호 생략 가능

if (hasToken) System.out.println("Welcome!");
// 또는
if (hasToken)
    System.out.println("Welcome!");

나중에 문장을 추가해야할 때를 생각해서 블럭{}으로 감싸주는게 바람직함.

if (hasToken)
    System.out.println("Welcome!"); // 조건문의 범위는 여기까지.
    System.out.println("Take a look"); // 들여쓰기를 해도 2개 이상의 문장은 블럭{} 없이는 묶이지 않음.

 

if-else 문

if (조건식) {
    // 수행할 코드
} else {
    // 조건식이 false인 경우 수행할 코드
}

if문의 블럭{}내의 코드를 수행하고, 그 밖의 경우에는 else문의 블럭{} 내의 코드를 수행함.

 

if-else if 문

if-else문은 경우의 수가 2가지인 경우만 커버되므로, 3개 이상인 경우는 else if를 사용해 여러 가지 조건들을 추가할 수 있음.

if (조건식1) {
    // 조건식1이 true일 때 수행할 코드
} else if (조건식2) {
    // 조건식2가 true일 때 수행할 코드
} else {
    // 조건식 1과 2 모두 false 일 때 수행할 코드
}

첫번째 조건식부터 순서대로 평가하여 참인 조건의 블럭{} 내부의 코드를 실행하고 전체 조건문을 빠져나옴.

 

중첩 if 문

if문 안에 또 다른 if문을 포함시킬 수 있음.

if (조건식1) {
    if (조건식2) {
        // 조건식 1과 2 모두 true일 때 수행할 코드
    } else {
        // 조건식1은 true, 조건식2는 false일 때 수행할 코드
    }
} else {
    // 조건식1이 false일 때 수행할 코드
}

 

switch 문

if-else if문으로 처리가 가능하더라도, 조건이 여러개인 조건문은 번거로울 수 있음.

switch문은 조건식 1개에 대한 결과를 여러가지 경우의 수로 쪼개어 각각의 케이스에 수행할 코드를 지정해줄 수 있음.

switch (조건식) {
    case1:
        // 조건식의 결과가 값1일 때 수행할 코드
        break;
    case2:
        // 조건식의 결과가 값2일 때 수행할 코드
        break;
    case3:
        // 조건식의 결과가 값3일 때 수행할 코드
        break;
    // ...
    default:
        // 조건식의 결과와 일치하는 값이 없을 때 수행할 코드 (기본값)
}

 

특징

  • 원하는 만큼 case를 추가할 수 있음

  • case마다 코드 마지막에 break를 걸어주지 않으면, switch문의 블럭 끝까지 코드를 계속 실행함. (break를 만나면 멈춤)

  • default의 위치는 어디든 상관없으나, 일반적으로 맨 마지막에 작성함.

  • case문은 붙여 써도 됨

    case 'A': case 'B': case 'C':
        // 조건식의 결과값이 'A' 또는 'B' 또는 'C'일 때 수행할 코드
        break;
  • switch문의 case안에 또 다른 switch문을 넣어 중첩 가능.

 

제약 조건

  • 조건식의 결과값과 각 case의 값은 정수, 문자열만 허용.

  • case문의 값은 상수만 허용. (변수, 실수는 안됨)

    JDK 1.7부터는 문자열도 허용됨

profile
Back-end Engineer 👨‍💻
post-custom-banner

0개의 댓글