제어문이란?
- 코드를 작성할 때 때로는 조건에 따라 문장을 건너뛰거나 같은 문장을 반복해서 수행해야 할 때가 있다.
이처럼 프로그램의 흐름 (flow)를 바꾸는 역할을 하는 문장을 '제어문' 이라고 한다.
-
실행되는 순서
-
조건문
-
조건에 따라 선택된 처리
-
if, switch
-
-
반복문
-
연속되는 동일한 처리
-
for, while, do while
-
조건문 ( if, switch )
조건문은 조건식의 결과에 따라 프로그램의 흐름이 바뀐다.
일반적으로 if문을 많이 쓰고 조건이 많을 때 switch문을 사용한다.
if문
- 조건식이 참이면 실행하기 위한 조건문이다.
( ) 안에 결과 값은 true나 false인 것들만 올 수 있다. (boolean형이나 boolean값을 반환하는 조건식)
score 값이 80보다 높으면 "합격"이 출력되고
80 이하면 아무일도 일어나지 않는다.
if else문
- 조건식이 참, 거짓에 따라 다르게 동작한다.
if - else문은 true일 때는 if { } 안의 코드가 실행되고 false인 경우에는 else { }의 코드가 실행된다.
참일 때 수행할 내용을 if 블럭 { }에, 거짓일 때 수행할 내용을 else 블럭 { }에 작성한다.
조건식의 결과에 따라 이 두 개의 블럭 { } 중 한 블럭 { } 의 내용이 수행되고 전체 if 문을 벗어나게 된다.
두 블럭이 모두 수행되거나 두 블럭 모두 수행되지 않을 수 있는 경우는 없다.
변수 input이 0이면 "입력한 숫자는 0입니다." 가 출력되고
input이 0이 아닌 다른 숫자면 "입력한 숫자는 0이 아닙니다."가 출력된다.
if - else if문
- 여러 개의 조건은 순차적으로 판단하여 동작한다.
if - else문은 두 가지 경우 중 하나가 수행되는 구조이다.
하지만 처리해야 할 조건식이 3개 이상인 경우에는 if - else if 문을 사용한다.
주의할 점은 앞의 조건에 해당하지 않는 것들 중에서 또 그 다음 조건식에 대한 참 거짓을 따진다는 점이다.
또한 해당하는 조건식이 나오면 그 블럭 { }안의 코드들만을 수행하고 전체 if문의 바깥으로 빠져나온다.
→ 조건식 1부터 순서대로 평가하여 참인 조건식을 만나면 해당 블럭 { } 만 수행하고 ' if - else if 문 ' 전체를 벗어난다.
만약 결과가 참(true)인 조건식이 없었다면 마지막 else문의 블럭을 수행하게 된다.
score의 값이 100이므로 첫 번째 if문의 블럭 { }만 수행하고 전체 if문을 빠져나온다.
else if 문도 조건은 맞지만 앞서 if문의 조건식이 참이 아닌 것들 중에 score가 70이상인 조건이므로
(80 <= score) && (score <90) 과 같은 의미가 된다.
결과값 → "90점 이상입니다."
중첩 if문
-if 문의 블럭 { } 내에서 또 다른 if 문을 포함시키는 코드를 중첩 if 문이라고 한다. ( 횟수 제한 X )
if문 안에 또 다른 if문을 넣은 것을 중첩 if문이라고 한다.
중첩 if문은 들여쓰기를 해서 if문들이 서로 명확하게 구분되도록 해야한다.
중첩 if문을 사용해서 score가 90점 이상인 사람들 중 95점이 넘으면 "A+ 입니다." 를 출력하고
socre가 90점 이상이지만 95점이 넘지 않는 사람에게는 "A 입니다."를 출력한다.
이렇게 중첩 if문을 활용하면 조건을 세분화시킬 수 있다.
switch문
witch문은 어떤 변수의 값에 따라서 문장을 실행할 수 있도록 하는 제어문이다.
- switch 문에서 사용하는 키워드는 switch, case, default, break 이다.
- switch는 범위적 표현을 할 수 없다.
* switch 문은 조건식을 먼저 계산한 다음, 그 결과와 일치하는 case 문으로 이동한다.
→ 이동한 case문 아래에 있는 코드를 수행하고 break문을 만나면 전체 switch문을 빠져나간다.
- switch문의 실행 순서
- 조건식을 계산
- 조건식의 결과와 일치하는 case문으로 이동
- case문 코드 수행
- break 나 switch문의 끝을 만나면 switch문 전체를 빠져나감
case 1 뿐만 아니라 case 2에 해당하는 코드가 출력되었다. → break 문이 없기 때문
switch문에서 조건문을 빠져나오려면 break문이 있어야 한다는 것을 알 수 있다.
switch문의 제약조건
1. switch문의 조건식 결과는 정수 또는 문자열이어야 한다.
2. case문의 값은 정수 상수(문자 포함), 문자열만 가능하며, 중복되지 않아야 한다.
'Programming > Java' 카테고리의 다른 글
[Java] 반복문으로 중첩 덧셈하기 (for문 활용) (0) | 2020.04.16 |
---|---|
[Java] 반복문 (for, while) 개념 및 활용 예제 (1) | 2020.04.13 |
[Java] 형 변환 (Type Conversion) - 개념 및 규칙 (강제, 자동) (0) | 2020.04.12 |
[Java] 연산자 (Operator) (0) | 2020.04.12 |
[Java] 변수 (Variable), 자료형 & 참조형, Stack & Heap (0) | 2020.04.12 |