안녕하세요.
이번 글에서는 조건문을 공부해보겠습니다.
조건문은 문장 수행 흐름을 바꾸는 역할을 하는 제어문 중 하나로
조건에 따라 다른 문장이 수행되도록 합니다.
조건문에는 대표적으로 If문과 Switch문이 있습니다.
먼저 조건문 중에 If문은 조건식과 수행하고자 하는 문장으로 이루어집니다.
조건식의 결과가 true면 수행할 문장을 실행하고 false면 실행하지 않고 넘어갑니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 |
// if문
// 표현식 = if(조건문)
// {실행할 문장}
int a = 10;
int b = 20;
int c = 30;
if(a < b)
{
a + 10;
}
if(c > b)
{
c + 10;
}
|
첫 번째 if문에서는 조건식(a < b)이 true이므로 실행할 문장(a + 10)을 수행하고
두 번째 if문에서는 조건식(c < b)이 false이므로 실행할 문장(c + 10)을 수행하지 않습니다.
만약에 if문을 여러 개 사용하면 모든 if문을 다 확인하기 때문에 프로그램 실행 시간이 길어집니다.
이때 if~else문 또는 if~else if문을 사용할 수 있습니다.
if~else문은 확인하고자 하는 조건식이 하나이고 실행하고자 하는 문장이 두 가지일 때 사용합니다.
if문의 조건식이 true일 경우에는 if문 안에 있는 문장을 수행하고
조건식이 false일 경우에는 else문 안에 있는 문장을 수행합니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
// if~else문
// 표현식 = if(조건식)
// {실행할 문장}
// else
// {실행할 문장}
int a = 10;
int b = 20;
if(a > b)
{
a + 10;
}
else
{
b - 10;
}
|
if문의 조건식(a > b)이 false이므로 else문 안의 문장(b - 10)을 수행합니다.
if~else if문은 확인하고자 하는 조건식과 실행하고자 하는 문장이 두 가지 이상일 때 사용합니다.
if문의 조건식이 true일 경우에는 if문 안에 있는 문장을 수행하고
if문의 조건식이 false일 경우에는 else if문의 조건식을 확인합니다.
그리고 else if문의 조건식이 true일 경우에는 else if문 안에 있는 문장을 수행하고
else if문의 조건식이 false일 경우에는 다음의 else if문을 확인합니다.
이렇게 모든 else if문을 확인하고도 참인 조건식이 없다면 else문 안에 있는 문장을 수행합니다.
if~else if문은 중간에 참인 조건식이 있어서 실행할 문장을 수행하면
그다음에 오는 else if문은 확인하지 않고 넘어가게 됩니다.
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
27
28
29
30
|
// if~else if문
// 표현식 = if(조건식)
// {실행할 문장}
// else if(조건식)
// {실행할 문장}
// else if(조건식)
// {실행할 문장}
// else
// {실행할 문장}
int a = 10;
int b = 20;
int c = 30;
if(a > b)
{
a + 10;
}
else if(a < c)
{
a + 20;
}
else if(b < c)
{
b + 10;
}
else
{
c - 10;
}
|
if문의 조건식(a > b)이 false이므로 다음 else if문의 조건식을 확인합니다.
첫 번째 else if문의 조건식(a < c)이 true이므로 실행할 문장(a + 20)을 수행합니다.
첫 번째 else if문을 수행했기 때문에 이후의 else if문은 확인하지 않고 넘어가게 됩니다.
그래서 두 번째 else if문의 조건식(b < c)이 true라도 실행하지 않습니다.
if문을 응용해서 중첩 if문을 만들 수 있습니다.
if문안에 if문 또는 if~else문, if~else if문을 넣어서 중첩 if문을 만드는 것이 가능합니다.
실행하는 순서는 기존의 if문과 같습니다. if문의 조건식이 true이면 안에 있는 if문을 순서대로 확인하고
그중에 true값이 나오는 조건식의 실행할 문장을 수행합니다.
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
// 중첩 if문
// 표현식
// if(조건식)
// {
// if(조건식)
// {실행할 문장}
// else if(조건식)
// {실행할 문장}
// else if(조건식}
// {실행할 문장}
// else
// {실행할 문장}
// }
// else
// {실행할 문장}
int a = 10;
int b = 20;
int c = 30;
if(a < b)
{
if(a > c)
{
a + 20;
}
else if(b > c)
{
b + 10;
}
else if(c > a)
{
c - 20;
}
else
{
b - 10;
}
else
{
c - 10;
}
|
if문안에 if~else if문이 들어가 있는 중첩 if문입니다.
if문이 true이기 때문에 안에 있는 if~else if문을 수행하고
true인 조건식(c > a)의 문장(c - 20)을 수행합니다.
다른 조건문인 Switch문은 조건식 하나로 많은 경우의 수를 처리하고자 할 때 사용할 때 사용합니다.
switch문은 if문과는 다르게 조건식의 결과를 정수 또는 문자열로 정할 수 있습니다.
실행 순서는 조건식의 결과 값과 일치하는 case문으로 이동하여 실행할 문장을 수행합니다.
case문에 break가 있다면 case문을 실행한 후에 switch문을 나가고
없다면 다음 case문을 확인하게 됩니다.
조건식의 결과 값과 일치하는 case문이 없을 경우에는 default문으로 이동하여 실행합니다.
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
27
28
29
30
31
32
|
// switch문
// 표현식
// switch(조건식)
// {
// case 조건값 : 실행할 문장;
// break;
// case 조건값 : 실행할 문장;
// break;
// ...
// default : 실행할 문장;
// break;
// }
int num = 3;
String str = null;
switch(num) // switch(조건식)
{
case 1 : str = "1번 케이스문입니다."; // 조건값이 1인 case문
break; // 실행을 멈추는 break문
case 2 : str = "2번 케이스문 입니다.";; // 조건값이 2인 case문
break; // 실행을 멈추는 break문
case 3 : str = "3번 케이스문 입니다.";; // 조건값이 3인 case문(실행하게 될 문장)
break; // 실행을 멈추는 break문
case 4 : str = "4번 케이스문 입니다.";; // 조건값이 4인 case문
break; // 실행을 멈추는 break문
default : str = "일치하는 조건값이 없습니다."; // default문(일치하는 문장이 없을 시에 수행)
break; // 실행을 멈추는 break문
}
System.out.println(str); // 문자열 str을 출력하는 문장("3번 케이스문입니다" 출력)
|
switch문의 조건식에 맞는 num을 확인하여 그에 해당하는 case문으로 이동합니다.
num이 3이므로 조건값이 3인 case문으로 이동하여 실행할 문장을 수행합니다.
그리고 break가 있으므로 더 이상 case문을 확인하지 않고 switch문을 빠져나오게 됩니다.
switch문은 모두 if문으로 대체가 가능하기 때문에 if문을 자주 사용하지만
구분하고자 하는 조건들이 많은 경우에는 switch문을 사용하면 한눈에 보기 편하다는 장점이 있습니다.
저는 일반적으로 if문을 사용하고 메뉴 같은 것들을 만들 때에는 switch문을 사용하는 편입니다.
본인이 만들고자 하는 프로그램에 맞는 조건문들을 사용하여 코딩해보세요.
이상으로 조건문에 대해서 공부해보았습니다.
수고하셨습니다. 다음 글에서 봬요.
[JAVA] 배열(Array) (0) | 2020.06.17 |
---|---|
[JAVA] 반복문 (0) | 2020.06.14 |
[JAVA] 연산자(Operator) (0) | 2020.06.12 |
[JAVA] 형 변환(Casting) (0) | 2020.06.10 |
[JAVA] 변수(Variable) (0) | 2020.06.05 |
댓글 영역