분기문을 이용하면 개발자가 코드의 흐름을 원하는 곳으로 이동할 수 있다.
분기문의 종류로는 break, continue, goto가 있으며, goto는 가독성을 떨어트린다는 이유로 JDK 1.5 때 폐기되었다.
분기문은 다른 제어문과 함께 사용하며, 독립적인 사용이 불가능하다는 특징이 있다.
💡break문
break는 자신이 속해 있는 제어문을 탈출하는 역할을 한다.
Unreachable code 오류
break문을 만나면 하던 일을 멈추고 무조건 탈출을 한다.
오류가 나는 이유는 들어오자마자 break문을 만나 탈출하기 때문에 도달할 수 없는 코드가 되었기 때문이다.
/*
for (int i = 1; i <= 10; i++) {
break;
System.out.println(i);
}
*/
for (int i = 1; i <= 10; i++) {
if (i == 5) {
break; // 반복문을 탈출한다.
continue; // 반복문의 처음으로 돌아간다.
}
System.out.println(i);
}
그래서 break문은 조건문과 묶어서 사용한다. break문은 if문을 인식하지 않으므로 break문이 if문 안에 있더라도 for문을 탈출할 대상으로 인식한다.
빈 리턴문
private static void m() {
// 빈 리턴문
return;
}
빈 리턴문은 실제로 값을 돌려주지 않는 void이다.
값을 반환하는 목적이 아니라 메소드를 중단하는 역할을 한다.
break문보다 종료하는 규모가 더 크다.
💡continue문
// 학교 담임 선생님 > 학생 상담 > 1번 ~ 30번
for(int i = 1; i<= 30; i++) {
// 오늘은 15번 학생까지만 상담을 진행한다.
if (i == 16) {
break;
}
// 결석한 10번, 15번 학생은 건너뛴다.
if (i == 10 || i == 15) {
continue;
}
System.out.printf("%d번 학생 상담중..\n", i);
}
1번 학생 상담중..
2번 학생 상담중..
3번 학생 상담중..
4번 학생 상담중..
5번 학생 상담중..
6번 학생 상담중..
7번 학생 상담중..
8번 학생 상담중..
9번 학생 상담중..
// 10번 학생 건너뜀 (continue)
11번 학생 상담중..
12번 학생 상담중..
13번 학생 상담중..
14번 학생 상담중..
// 15번 학생 건너뜀 (continue)
// 15번 학생까지 상담 진행 (break)
break문과 continue문의 통제 방식의 차이는 제어문을 나가느냐, 건너뛰느냐의 차이이다.