제어문
1) 조건문
제어문(control flow statements)
자바 프로그램이 원하는 결과를 얻기 위해 프로그램의 순차적인 흐름을 제어해야 하는 경우가 생기는데
이 때 사용하는 명령문
중괄호({})로 둘러싸여 있으며, 이러한 중괄호 영역을 블록(block)이라고 함
조건문(conditional statments)
1. if 문
2. if / else 문
3. if / else if / else 문
4. switch 문
if 문
조건식의 결과가 참(true)이면 주어진 명령문을 실행하고, 거짓(false)이면 아무것도 실행하지 않음
if (조건식) {
조건식의 결과가 참일 때 실행하고자 하는 명령문;
}
if / else 문
else문은 주어진 조건식의 결과가 거짓(false)이면 주어진 명령문을 실행
if (조건식) {
조건식의 결과가 참일 때 실행하고자 하는 명령문;
} else {
조건식의 결과가 거짓일 때 실행하고자 하는 명령문;
}
if / else if / else 문
if (조건식1) {
조건식1의 결과가 참일 때 실행하고자 하는 명령문;
} else if (조건식2) {
조건식2의 결과가 참일 때 실행하고자 하는 명령문;
} else {
조건식1의 결과도 거짓이고, 조건식2의 결과도 거짓일 때 실행하고자 하는 명령문;
}
삼항 연산자에 의한 조건문
간단한 if / else 문을 삼항 연산자를 이용해 간결하게 표현할 수 있음
조건식 ? 반환값1 : 반환값2
switch 문
if / else 문과 마찬가지로 주어진 조건 값의 결과에 따라 프로그램이 다른 명령을 수행하도록 하는 조건문
switch (조건 값) {
case 값1:
조건 값이 값1일 때 실행하고자 하는 명령문;
break;
case 값2:
조건 값이 값2일 때 실행하고자 하는 명령문;
break;
...
default:
조건 값이 어떠한 case 절에도 해당하지 않을 때 실행하고자 하는 명령문;
break;
}
2) 반복문
반복문(iteration statements)
프로그램 내에서 똑같은 명령을 일정 횟수만큼 반복하여 수행하도록 제어하는 명령문
1. while 문
2. do / while 문
3. for 문
4. Enhanced for 문
while 문
특정 조건을 만족할 때까지 계속해서 주어진 명령문을 반복 실행
조건식의 검사를 통해 반복해서 실행되는 반복문을 루프(loop)라고 함
while 문 내부에 조건식의 결과를 변경하는 변경문이 존재하지 않을 때 프로그램이 영원히 반복되는 무한 루프(infinite loop)에 빠지게 됨 -> 반드시 피해야 하는 상황
while (조건식) {
조건식의 결과가 참인 동안 반복적으로 실행하고자 하는 명령문;
}
do / while 문
루프를 한 번 실행한 후 조건식을 검사
조건식의 결과와는 상관없이 무조건 한 번은 루프를 실행
do {
조건식의 결과가 참인 동안 반복적으로 실행하고자 하는 명령문;
} while (조건식);
for 문
while 문과는 달리 자체적으로 초기식, 조건식, 증감식을 모두 포함하고 있는 반복문
for (초기식; 조건식; 증감식) {
조건식의 결과가 참인 동안 반복적으로 실행하고자 하는 명령문;
}
Enhanced for 문
JDK 1.5부터 Enhanced for 문이라는 반복문이 추가됨
컬렉션 프레임워크와 배열에서 유용하게 자주 사용됨
3) 기타 제어문
루프의 제어
continue 문과 break 문은 일반적인 루프의 흐름을 사용자가 직접 제어할 수 있도록 도와줌
continue 문
루프 내에서 사용하여 해당 루프의 나머지 부분을 건너뛰고, 바로 다음 조건식의 판단으로 넘어가게 해줌
// 1부터 100까지의 정수 중에서 5의 배수와 7의 배수를 모두 출력하는 예제
for (int i = 1; i <= 100; i++) {
if (i % 5 == 0 || i % 7 == 0) {
System.out.println(i);
} else {
continue;
}
}
break 문
루프 내에서 사용하여 해당 반복문을 완전히 종료시킨 뒤, 반복문 바로 다음에 위치한 명령문을 실행
// 1부터 100까지의 합을 무한 루프를 통해 구하는 예제
int num = 1, sum = 0;
while (true) { // 무한 루프
sum += num;
if (num == 100) {
break;
}
num++;
}
System.out.println(sum);