우리가 프로그래밍을 하다 보면 원하는 결과를 만들기 위해서 프로그램의 동작을 제어할 필요가 있을 것이다.
이때 사용되는 것이 '제어문'으로, 조건문과 반복문이 여기에 해당된다.
이번에 공부한 것은 '조건문'이다. 반복문에 대한 것은 다음 게시물에서 다루도록 하겠다.
조건문 Conditional Statements
조건을 판별하는 제어문으로
주어진 조건식과 조건식의 달성 여부에 따라 프로그램의 실행 여부를 제어할 수 있다.
자바에서 사용되는 대표적인 조건문은 'if 문'과 'switch 문'이 존재한다.
사실 이거말고도 'else 문'과 'else if 문'도 존재하지만, 이 두 가지는 단독으로는 사용할 수 없으므로
if문을 설명할 때 같이 붙여서 설명하도록 하겠다.
1. if 조건문 / else 조건문 / else if 조건문
① if 조건문
- 영어 'if'를 직역하면, '만약 ~라면' 이라는 의미를 가지고 있다.
- 프로그래밍에서도 이와 마찬가지로 특정한 조건이 성립되면 특정 코드를 실행하는 구조를 가지고 있다.
public class Main {
public static void main(String[] args){
//if 조건문의 정의
if (/*조건*/){
//'( )'(소괄호) 내부의 조건이 성립되면 if 조건문 내부에 작성된 명령이 실행된다.
//반대로 말하자면 조건이 성립되지 않으면 명령이 실행되지 않는다는 것이다.
//여기서 조건이 성립됐다는 것은 해당 조건식이 '참 (true)'이라는 것이고
//조건이 성립되지 않은 것은, 해당 조건식이 '거짓 (false)'이라는 것이다.
//요약하자면 if문은 조건식이 참(true)인 경우에만 동작하는 조건문이라는 것이다.
System.out.println("안녕"); //실행할 명령
//if문의 조건식을 true로 바꾸고 실행하면 console 창에
//"안녕"이라는 문장이 출력될 것이다.
}
}
}
② else 조건문
- 단독으로 사용할 수 없는 조건문으로, if문 뒤에 붙여서 사용된다.
- if 문의 조건이 거짓인 경우에 동작한다.
public class Main{
public static void main(String[] args){
//else 문 설명
if (false){ //if 조건문의 조건식이 '거짓'(false)이다.
System.out.println("안녕");
//조건식이 거짓이기 때문에 해당 명령은 실행되지 않고
//else 문으로 넘어간다.
}
else {
//if문의 조건식이 '거짓'인 경우에 실행되는 조건문
//프로그램을 실행하면 아래의 명령이 출력된다.
System.out.println("안녕하세요.");
//출력: 안녕하세요.
}
}
}
③ else if 조건문
- else 문처럼 단독으로 사용하지 못하는 조건문으로, if문과 연계해서 사용한다.
- if 문의 조건이 거짓인 경우에 동작하고, 별도의 조건을 추가할 수 있어서 해당 조건문의 실행 여부를
임의로 결정할 수 있다.
public class Main{
public static void main(String[] args){
//else if문 설명
if (false){
System.out.println("안녕");
//if문의 조건식이 거짓이기 때문에 해당 조건식은 실행되지 않는다.
}
else if(true){
//if문의 조건이 거짓이고, else if문의 조건이 참(true)이므로
//해당 조건문이 동작하게 된다.
//물론 else if문도 조건이 거짓(false)이면 동작하지 않음
System.out.println("안녕하세요");
}
//if문과 else if문의 조건이 둘 다'거짓(false)'인 경우에 동작함
else {
System.out.println("Hello");
}
}
}
if 문, else 문, else if 문의 정의와 기본 구조를 알았지만, 어떤 식으로 동작을 하는 지 한 눈에 안 들어올 수도 있다.
이를 위해서 이들의 동작 방식을 그림으로 표현해봤다.
이 그림을 통해서 if, else if, else 문이 프로그램 상에서 어떻게 동작하는 지 감을 잡았을 것이다.
이제 이들을 활용해서 간단한 예제 코드를 작성하고, 이를 실행해본 다음에 if 조건문 설명을 마치겠다.
④ if 조건문 예제 코드
//문제: 변수 두개의 크기를 비교하고, 비교 결과를 알려주게 하기.
public class Main{
public static void main(String[] args){
int alpha = 20;
int beta = 30;
if (alpha > beta){
System.out.println("alpha가 beta보다 큽니다.");
}
else if (alpha < beta){
System.out.println("alpha는 beta보다 작습니다.");
}
else {
System.out.println("alpha와 beta의 값은 같습니다.");
}
}
}
변수 alpha와 beta에 저장된 값을 비교해서, 그 결과에 따라 다른 문장이 출력되는 것을 확인할 수 있을 것이다.
alpha에 저장된 값이 정수 20, beta에는 정수 30이 저장됐으므로, 조건식들을 살펴보자.
if 문의 조건식 'alpha > beta'는 거짓 (false)이므로 해당 조건문은 실행되지 않고, 다음 else if 조건문으로 넘어간다.
else if문의 조건식을 살펴보자. 일단 해당 조건식은 '참(true)'이다.
따라서 해당 부분이 실행되고, 그 다음인 else 문은 실행되지 않는다.
이걸로 if문, else if문, else 문에 대한 설명이 얼추 끝났다. 다음은 자바에서 사용되는 조건문 중 하나인 'switch 문'에 대해 알아보자.
2. switch 문
① switch 문의 정의
- if 문과 같은 조건 제어문이지만 '>', '<', '>=', '<='와 같은 비교연산자는 조건에 들어가지 못한다.
즉, 정수만 조건에 들어갈 수 있다는 것이다.
- case 문과 default 문으로 구성되어 있다.
(1). case 문
- switch 문 내에서 여러 번 사용 가능하다.
- case 문의 숫자가 조건을 만족하면, 'break' 명령을 받기 전까지 프로그램이 실행된다.
(* break: 'switch' 문이나, 반복문을 빠져 나오게 할때 사용하는 문법)
- 사용 예시
case 값1:
실행문;
break;
(2). default 문
- 조건에 만족하는 case 문이 없을 경우에 동작되는 부분으로, 필요 없다면 생략 가능하다.
- 하나의 switch 문에서 default 문은 하나만 사용할 수 있다.
(switch 문 내에서 여러 번 사용할 수 있는 case 문과는 다르다.)
switch 문의 정의를 알았으니, 구체적으로 어떻게 동작하는 지를 알아보자.
② switch 문의 동작 구조
public class Main {
public static void main(String[] args){
int number = 1;
//int형 변수 number 선언하고, 정수값 1을 저장한다.
switch (number){ //switch (변수명){}
case 1: //case 값1:
System.out.println("number = 1");
//변수 number에 저장된 값은 1이다.
//case 문의 숫자도 1이므로 조건이 만족됐다. (true)
//조건이 참이므로, 해당 case 문이 실행된다.
break;
//break 명령을 만났기 때문에
//출력은 'number = 1'까지만 나온다.
//반대로 말하자면 break 명령이 없을 경우에는
//default 문의 문장까지 나오게 된다.
case 2:
System.out.println("number = 2");
case 3:
System.out.println("number = 3");
default:
System.out.println("number = ?");
}
}
}
위의 코드를 복사해서 실행해보면 아래와 같은 결과가 나오는 것을 확인할 수 있을 것이다.
case 1에서 break 명령을 받고, 해당 switch 문을 빠져나왔다.
Console 창에 문장 "number = 1"만 출력된 것을 확인할 수 있다.
이번엔 case 1에 입력한 break 명령을 지우고 프로그램을 실행해보자.
방금 전과는 다르게 case 1 부터 default 문까지 전부 실행된 것을 출력 결과를 통해서 확인할 수 있다.
앞에서 case 문은 break 명령을 받기 전까지 계속 실행된다고 설명했었다.
그리고 break는 switch 문이나 반복문을 빠져나오게, 종료시키는 역할을 하는 명령이다.
하지만 이번에는 break 명령을 입력하지 않았기 때문에 switch 문을 빠져나오지 않고
case 1 부터 default 문까지 전부 실행했으므로 위와 같은 결과가 나오는 것은 당연한 일이다.
마지막으로 해당 프로그램이 동작하는 것을 다이어그램으로 요약하고 switch 문에 대한 설명을 마치겠다.
'Programming > Java' 카테고리의 다른 글
[Java] 6. 배열 (Part 1) (0) | 2022.10.19 |
---|---|
[Java] 5. 반복문 (0) | 2022.10.11 |
[Java] 3. 연산자 (0) | 2022.09.23 |
[Java] 2. 데이터 타입과 형변환 (1) | 2022.09.21 |
[Java] 1. 변수와 상수 (0) | 2022.09.13 |