이병록의 개발 블로그

[코드라떼] 자바 프로그래밍 - 조건문 본문

자바 프로그래밍 강의

[코드라떼] 자바 프로그래밍 - 조건문

이병록 2026. 1. 31. 16:50

목차

  1. 조건식과 논리 연산자
  2. 조건문
  3. if 문
  4. switch 문
  5. [실습해보기] 조건문을 사용해보자
  6. 삼항 연산자

1. 조건식과 논리 연산자

참 또는 거짓을 반환하는 조건식을 작성하려면 기본적으로 [논리 연산자]에 대해서 알아야 합니다.
논리 연산자는 좌 -> 우로 연산을 하며 참인지 거짓인지 판단합니다. 다만 괄호가 있으면 괄호에 있는 것을 먼저 연산을 합니다.

가장 앞의 true와 false를 OR 연산을 하고 연산의 결과 값과, 그 다음 true와 OR 연산을 하여 true의 값을 반환합니다.

특별한 경우로 AND 연산의 경우 연산자 기준 좌측의 값이 false인 경우는 우측에 있는 값을 확인하지 않습니다. 그 이유는 우측에 있는 값과 상관없이 항상 결과 값은 false이므로 빠른 연산을 위해 생략합니다.

예시로 age 변수가 30인지 동등 비교 연산자를 이용하여 결과값을 확인한 후 false 이면 우측에 있는 weight == 20 연산을 하여 true인지 false인지 확인하지 않고 바로 false를 반환합니다.

연산자 우선 순위에 의해 괄호의 식을 먼저 확인합니다. false && true 연산 시 앞의 값이 false 이므로 바로 false를 반환하고 true와 false를 OR 연산하여 true를 반환합니다.

2. 조건문

조건문은 조건식이 참(true)일 때 실행하는 분기 구문으로 프로그램의 실행 흐름을 조건에 따라 실행하거나 또는 실행하지 않도록 할 수 있는 구문입니다.
이러한 조건문에는 if문과 switch문이 있으며 조건은 항상 위에서부터 아래로 체크합니다.

3. if 문

if 문은 가장 위에 있는 조건식부터 순차적으로 확인하여 ‘참’인 조건식을 만나면 조건문 내부에 있는 코드를 실행 후 조건문을 탈출합니다.
if, else if, else 세 가지 키워드를 사용하거나 생략하는 방식으로 실행흐름을 제어할 수 있습니다.

if 구문의 다양한 예시

if - else if - else

if (참 or 거짓) {
    // 참이면 실행 후 조건문 탈출
} else if (참 or 거짓) {
    // 참이면 실행 후 조건문 탈출
} else {
   // 두 조건이 다 거짓이면 실행 후 탈출
}
  1. 첫 번째 조건식이 참이면 첫 번째 조건문 내부에 있는 코드를 실행 후 탈출합니다. 그러나 거짓이면 그 다음 조건식을 확인합니다.
  2. 두 번째 조건식이 참이면 두 번째 조건문 내부에 있는 코드를 실행 후 탈출합니다. 그러나 거짓이면 그 다음 조건식을 확인합니다.
  3. 두 조건이 모두 거짓인 경우 else 내부에 있는 코드를 실행 후 탈출합니다.

if - else

if (참 or 거짓) {
    // 참이면 실행 후 조건문 탈출
} else {
   // 조건이 거짓이면 실행 후 탈출
}
  1. 첫 번째 조건식이 참이면 첫 번째 조건문 내부에 있는 코드를 실행 후 탈출합니다. 그러나 거짓이면 그 다음 조건식을 확인합니다.
  2. 조건이 거짓인 경우 else 내부에 있는 코드를 실행 후 탈출합니다.

if

if (참 or 거짓) {
    // 참이면 실행 후 조건문 탈출
}
  1. 첫 번째 조건식이 참이면 첫 번째 조건문 내부에 있는 코드를 실행 후 탈출합니다. 그러나 거짓이면 조건문을 탈출합니다.

if - else if - else if - else

if (참 or 거짓) {
    // 참이면 실행 후 조건문 탈출
} else if (참 or 거짓) {
    // 참이면 실행 후 조건문 탈출
} else if (참 or 거짓) { 
    // 참이면 실행 후 조건문 탈출
} else {
   // 세 조건이 다 거짓이면 실행 후 탈출
}
  1. 첫 번째 조건식이 참이면 첫 번째 조건문 내부에 있는 코드를 실행 후 탈출합니다. 그러나 거짓이면 그 다음 조건식을 확인합니다.
  2. 두 번째 조건식이 참이면 두 번째 조건문 내부에 있는 코드를 실행 후 탈출합니다. 그러나 거짓이면 그 다음 조건식을 확인합니다.
  3. 세 번째 조건식이 참이면 세 번째 조건문 내부에 있는 코드를 실행 후 탈출합니다. 그러나 거짓이면 그 다음 조건식을 확인합니다.
  4. 세 조건이 모두 거짓인 경우 else 내부에 있는 코드를 실행 후 탈출합니다.

NOTE! else if의 개수는 제한이 없습니다.

if - else if - else if

if (참 or 거짓) {
    // 참이면 실행 후 조건문 탈출
} else if (참 or 거짓) {
    // 참이면 실행 후 조건문 탈출
} else if (참 or 거짓) { 
    // 참이면 실행 후 조건문 탈출
}
  1. 첫 번째 조건식이 참이면 첫 번째 조건문 내부에 있는 코드를 실행 후 탈출합니다. 그러나 거짓이면 그 다음 조건식을 확인합니다.
  2. 두 번째 조건식이 참이면 두 번째 조건문 내부에 있는 코드를 실행 후 탈출합니다. 그러나 거짓이면 그 다음 조건식을 확인합니다.
  3. 세 번째 조건식이 참이면 세 번째 조건문 내부에 있는 코드를 실행 후 탈출합니다. 거짓이어도 조건문을 탈출합니다.

NOTE! else if의 개수는 제한이 없습니다.

int age = 40;
if (60 <= age) {
    // age가 40이므로 패스
} else if (50 <= age) {
    // age가 40이므로 패스
}

// 밑에 있는 구문을 실행함

이렇게 조건문은 ifelse if, else를 이용하여 프로그램의 실행 흐름을 다양하게 제어할 수 있습니다.

4. switch 문

switch문은 조건값에 따라 특정 case부터 실행할 수 있도록 하는 구문입니다. 책의 라벨이라고 생각하면 쉽습니다. switch 문은 특정 case부터 아래로 내려가며 코드를 실행하되 break 키워드를 만나면 switch 문을 탈출합니다.

조건값으로 올 수 있는 것들

  1. char
  2. byte
  3. short
  4. int
  5. Character
  6. Byte
  7. Short
  8. Integer
  9. String
  10. enum

*Character, Byte, Short, Integer, String, enum은 이후에 배웁니다.

switch 구문의 다양한 예시

break 키워드 없는 switch 구문

switch (조건값) {
    case 값1 :
        // 조건값이 '값1'이면 해당 위치 부터 실행 후 아래의 case로 진행
    case 값2 :
        // 조건값이 '값2'이면 해당 위치 부터 실행 후 아래의 case로 진행
    case 값3 :
        // 조건값이 '값3'이면 해당 위치 부터 실행 후 아래의 case로 진행
    default:

}
  1. 만약에 조건값이 '값1'이면
  2. case 값1 -> case 값2 -> case 값3 -> defalult 순으로 실행됩니다.
  3. 만약에 조건값이 '값2'이면
  4. case 값2 -> case 값3 -> defalult 순으로 실행됩니다.
  5. 만약에 조건값이 '값3'이면
  6. case 값3 -> defalult 순으로 실행됩니다.
  7. switch 문을 탈출하지 않는 이상 default는 맨 마지막에 실행됩니다.

break 키워드 있는 switch 구문 1

switch (조건값) {
    case 값1 :
        // 조건값이 '값1'이면 해당 위치 부터 실행 후 탈출
        break;
    case 값2 :
        // 조건값이 '값2'이면 해당 위치 부터 실행 후 아래의 case로 진행
    case 값3 :
        // 조건값이 '값3'이면 해당 위치 부터 실행 후 아래의 case로 진행
    default:

}
  1. 만약에 조건값이 '값1'이면
  2. case 값1 을 실행 후 break문을 만나 switch 문을 탈출합니다.
  3. 만약에 조건값이 '값2'이면
  4. case 값2 -> case 값3 -> defalult 순으로 실행됩니다.
  5. 만약에 조건값이 '값3'이면
  6. case 값3 -> defalult 순으로 실행됩니다.
  7. switch 문을 탈출하지 않는 이상 default는 맨 마지막에 실행됩니다.

break 키워드 있는 switch 구문 2

switch (조건값) {
    case 값1 :
        // 조건값이 '값1'이면 해당 위치 부터 실행 후 탈출
        break;
    case 값2 :
        // 조건값이 '값2'이면 해당 위치 부터 실행 후 아래의 case로 진행
    case 값3 :
        // 조건값이 '값3'이면 해당 위치 부터 실행 후 탈출
        break;
    default:

}
  1. 만약에 조건값이 '값1'이면
  2. case 값1 을 실행 후 break문을 만나 switch 문을 탈출합니다.
  3. 만약에 조건값이 '값2'이면
  4. case 값2 -> case 값3 순으로 실행됩니다.
  5. 만약에 조건값이 '값3'이면
  6. case 값3 을 실행 후 break문을 만나 switch 문을 탈출합니다.
  7. switch 문을 탈출하지 않는 이상 default는 맨 마지막에 실행됩니다.

break 키워드 있는 switch 구문 3

switch (조건값) {
    case 값1 :
        // 조건값이 '값1'이면 해당 위치 부터 실행 후 탈출
        break;
    case 값2 :
        // 조건값이 '값2'이면 해당 위치 부터 실행 후 탈출
        break;
    case 값3 :
        // 조건값이 '값3'이면 해당 위치 부터 실행 후 탈출
        break;
    default:

}
  1. 만약에 조건값이 '값1'이면
  2. case 값1 을 실행 후 break문을 만나 switch 문을 탈출합니다.
  3. 만약에 조건값이 '값2'이면
  4. case 값2 을 실행 후 break문을 만나 switch 문을 탈출합니다.
  5. 만약에 조건값이 '값3'이면
  6. case 값3 을 실행 후 break문을 만나 switch 문을 탈출합니다.
  7. switch 문을 탈출하지 않는 이상 default는 맨 마지막에 실행됩니다.

default 키워드 없는 switch 구문

switch (조건값) {
    case 값1 :
        // 조건값이 '값1'이면 해당 위치 부터 실행 후 탈출
        break;
    case 값2 :
        // 조건값이 '값2'이면 해당 위치 부터 실행 후 탈출
        break;
    case 값3 :
        // 조건값이 '값3'이면 해당 위치 부터 실행 후 탈출
        break;
}
  1. 만약에 조건값이 '값1'이면
  2. case 값1 을 실행 후 break문을 만나 switch 문을 탈출합니다.
  3. 만약에 조건값이 '값2'이면
  4. case 값2 을 실행 후 break문을 만나 switch 문을 탈출합니다.
  5. 만약에 조건값이 '값3'이면
  6. case 값3 을 실행 후 break문을 만나 switch 문을 탈출합니다.

5. [실습해보기] 조건문을 사용해보자

실습도구에 해당 코드를 작성해 봅시다

if 조건문

case 1

코드 작성

int num = 65;
char alphabet;

if (65 == num) {
    alphabet = 'A';
} else if (66 == num) {
    alphabet = 'B';
} else if (67 == num) {
    alphabet = 'C';
} else {
    alphabet = '0';
}

System.out.println(alphabet);

출력

A

case 2

코드 작성

char locationPrefix = 's';

String location = "어딘지모름";

if ('k' == locationPrefix) {
    location = "강남";
} else if ('s' == locationPrefix) {
    location = "수원";
} 

System.out.println(location);

출력

수원

case 3

코드 작성

boolean isToday = true;

if (isToday) {
    System.out.print("오늘 ");
}

System.out.println("뭐할까?");

출력

오늘 뭐할까?

switch 문

case 1

코드 작성

int category = 1;
switch (category) {
    case 1:
        System.out.println(1);
    case 2:
        System.out.println(2);
    case 3:
        System.out.println(3);
}

출력

1
2
3

case 2

코드 작성

int category = 1;
switch (category) {
    case 1:
        System.out.println(1);
    case 2:
        System.out.println(2);
            break;
    case 3:
        System.out.println(3);
}

출력

1
2

case 3

코드 작성

int category = 2;
switch (category) {
    case 1:
        System.out.println(1);
            break;
    case 2:
        System.out.println(2);
            break;
    case 3:
        System.out.println(3);
            break;
}

출력

2

case 4

코드 작성

int category = 4;
switch (category) {
    case 1:
        System.out.println(1);
            break;
    case 2:
        System.out.println(2);
            break;
    case 3:
        System.out.println(3);
            break;
    default:
        System.out.println("기본");
}

출력

기본

6. 삼항 연산자

삼항 연산자는 if 문을 만들 수 있는 또 다른 방법을 제공합니다.

자료형 변수명 = (조건식) ? 참인 경우 : 거짓인 경우;

예시로 작성해보면 다음과 같습니다.

int num = 65;
char alphabet = (65 == num) ? 'A' : 'B';

조건식이 참인 경우 ‘A’의 값을 반환하고 거짓인 경우는 ‘B’의 값을 반환하며, 반환된 값은 char alphabet 변수에 저장됩니다.

int num = 65;
char alphabet = (65 == num) ? 'A' : (66 == num) ? 'B' : (67 == num) ? 'C' : '0';

삼항 연산자를 연결해서 사용할 수도 있습니다.
삼항 연산자는 특정 상황에서 조건문을 좀 더 간소하게 보여줄 수 있으나, 조건이 많아지면 오히려 코드의 가독성이 떨어지는 문제를 가지고 있습니다.
현업에서는 조건식이 하나인 경우일 때만 사용하는 것이 좋습니다.

boolean isReady = true;
int category = (isReady) ? 1 : 0;  // 조건식이 하나일 때만 사용하는 것이 좋다
Comments