본문 바로가기

개발자 이야기/JAVA

자바 조건문에 대해 알아보자(if문/switch문)

꾸준히 공부하고 정리하는 것이 중요한데, 언제나 그랬듯 쉽게 되지 않는 것 같다. 이번에도 역시 몰아서 정리하게 되었다. 연산자까지 정리했었는데 곧바로 조건문에 대해서 정리하는 포스팅을 하게 되었다. 코딩을 하는 데에 있어서 이번 포스팅에서 정리할 조건문(if문/switch)과 반복문(for문/while문 등)은 정말 없어서는 안될 부분이다. 물론 단순히 "Hello World!"를 출력하는 데에는 필요가 없으나, 간단한 프로그램을 짜는 데에는 꼭 필요하다. 간단하지만 중요한 내용이기 때문에 조건문과 반복문은 꼭 이해하고 넘어가야 할 부분이다.


이번 포스팅에서는 앞서 말한 대로 조건문에 대해서 정리할 예정이다. 조건문은 크게 if문과 swich문으로 나눌 수 있다. 앞서 정리했던 연산자 중 삼항 연산자도 같은 역할을 한다. 하지만 삼항 연산자는 앞서 간략하게 정리했으니, 이번 포스팅에서는 저 두 조건문만 정리하도록 한다.



▶ if문


if문은 가장 기본적인 조건문이다. 자바가 아니더라도 엑셀을 사용해 본 사람이라면 누구나 알 것이다. 지난 포스팅에서 AND, OR에 이어서 이번에도 엑셀을 얘기하는 이유는 아무래도 자바를 다뤄본 사람보다 엑셀을 다뤄 본 사람이 더 많을 것이기 때문이다. if문은 영어 그대로 해석하면 '만약'이라는 뜻을 가지고 있는데, 자바에서도 그렇게 이해하면 편할 것 같다. '만약 ~라면' 조건을 실행하기 때문이다. 형식을 살펴보자.



형식은 이렇게 된다. if를 쓰고 괄호 안에 조건을 넣어준다. 그리고 중괄호 안에는 조건이 맞아 떨어질 경우에 수행할 작업을 넣어준다. 수행할 작업이 한 줄의 코드라면 굳이 중괄호를 치지 않아도 되지만, 나중에 헷갈릴 수 있기에 나는 꼭꼭 적어주는 편이다. 이해를 돕기 위해 쉬운 예를 들어보자. '배가 고프면, 밥을 먹는다.' 라는 문장을 if문으로 표시해보면,


if(배가 고프다){

밥을 먹는다.

}


라고 표현할 수 있겠다. 배가 고프지 않다면 if문을 만족시키지 못하므로 '밥을 먹는다' 라는 작업은 수행되지 않는다. 앞선 포스팅에서 살펴본 삼항 연산자랑 비슷한 기능을 수행한다. 그럼 이런 간단한 예제 말고 실제 어떻게 사용되는지 간단한 코드를 살펴보자.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
package test;
 
public class test {
    public static void main(String[] args) {
        int num = 2;
        if(num % 2 == 0){
            System.out.println("짝수입니다.");
        }
        if(num % 2 != 0){
            System.out.println("홀수입니다.");
        }
    }
}
//출력값 : 짝수입니다.
cs


위의 코드는 임의의 숫자가 홀수인지 짝수인지 구분하는 코드이다. 임의의 숫자라 함은 사용자에게 입력을 받도록 해야하지만, 간략한 코드이기에 num이라는 변수에 2를 넣어주고 2가 짝수인지, 홀수인지 구분하는 코드이다. 이 코드를 실행하면 "짝수입니다." 라는 결과가 출력될 것이다. 2는 짝수이기 때문에 두번째 if문인 if(num % 2 != 0) 안에 들어가지 않기 때문이다. 만약 if문이 없이 그냥 System.out.println("홀수입니다."); 를 작성하였을 경우 짝수입니다, 홀수입니다가 둘다 출력되었을 것이다. 



하지만 이렇게 짜면 if문을 2개나 짜야한다는 단점이 있다. 물론 2개의 조건이기에 if문을 2번 쓰는 건 당연하다고 생각할 수 있지만, if~else구문을 통해서 1개의 if문으로 2개의 결과를 구별해낼 수 있다. if~else문의 형식을 간략하게 살펴보자.



이런 식으로 구성되어 있다. 물론 홀수/짝수 이렇게 2가지 조건으로만 나뉘면 if문 하나에 바로 else문을 사용하면 되지만, 학점을 구할 때(A, B, C, D, F)는 5개가 아닌 4개만 사용해도 된다. A, B, C, D에 해당하는 조건만 준 뒤, 4가지 다 아니면 전부 F로 구분해버리면 되기 때문이다. 그럼 위의 짝수/홀수 구분하는 if문을 else를 사용해서 표현해보면,


1
2
3
4
5
6
7
8
9
10
11
12
13
package test;
 
public class test {
    public static void main(String[] args) {
        int num = 2;
        if(num % 2 == 0){
            System.out.println("짝수입니다.");
        }else{
            System.out.println("홀수입니다.");
        }
    }
}
//출력값 : 짝수입니다.
cs


이렇게 나올 것이다. 조건문 하나가 빠졌다. 그래도 동일한 결과값을 얻을 수 있다. 이렇게 하면 조금이나마 코드를 간단하게 작성할 수 있다.


▶ switch문


이번엔 조건문의 다른 종류인 switch문이다. switch문은 if문과는 형식이 다르다. 우선 어떻게 쓰이는지 간단하게 살펴보자.



자세히 보면 앞서 살펴 본 if~else문의 형태와 유사하다. 조건식에 해당한다면 switch문으로 들어가 결과값에 해당하는 case를 찾아 case 내의 작업을 수행한다. 다만 차이점이 있다면, 우선 break;문의 존재이다. break문은 나중에 정리할 반복문에서도 나오겠지만, switch문이나 반복문에서 빠져나가는 기능을 수행한다. 값1에 해당하여 값1 case 내의 작업을 수행한 뒤, break를 만나 switch문을 빠져나가는데, 만약 break가 없다면, 밑에 작업들도 수행하게 된다. 그래서 switch문에는 각 case별로 break를 꼭 써줘야 한다. 빼먹기 쉬운 부분이다. 



그리고 또 처음 보는 것, 바로 default이다. default문은 if~else문에서의 else와 같은 역할을 한다. 위의 case들에 해당하지 않는다면 default문 내의 작업을 수행한다. default문을 쓰면 코드를 또 간략하게 쓸 수 있다. 그럼 switch문의 예를 살펴보자.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
package test;
 
public class test {
    public static void main(String[] args) {
        int kor = 55;
         
        switch(kor / 10){
        case 10:
        case 9:
            System.out.println('A');
            break;
        case 8:
            System.out.println('B');
            break;
        case 7:
            System.out.println('C');
            break;
        case 6:
            System.out.println('D');
            break;
        default:
            System.out.println('F');
        }
    }
}
//출력값 : F
cs


위의 코드는 국어 점수에 따라 해당하는 학점을 구해주는 코드이다. 우선 55점을 입력했고, switch문에서는 55점을 10으로 나누게 된다. switch안에 들어가는 값은 5.5가 아닌 5가 된다. 그 이유는 정수형끼리 나눴기 때문에 값은 정수형이 나오게 된다. 소수점이 다 버려지기 때문이다. 그래서 case문을 위부터 돈다. 하지만 10, 9, 8, 7, 6을 다 만족하지 않기 때문에 default에 들어가 F를 출력하게 된다. 이런식으로 쓰면 된다.





이렇게 해서 조건문(if문/switch문)을 간략하게 정리해보았다. 다음 포스팅에서는 반복문에 대해서 정리해야겠다. 앞으로도 열심히 공부해야겠다.