4.1 코드 실행 흐름 제어
자바 프로그램은 main() 메소드의 시작 중괄호({)에서 끝 중괄호(})까지 위에서부터 아래로 실행하는 흐름이다. 이러한 실행 흐름을 흐름 제어문이 원하는 방향으로 바꿀 수 있도록 해준다.
제어문은 조건식과 중괄호 { } 블록으로 구성되는데, 조건식의 연산 결과에 따라 블록 내부의 실행 여부가 결정된다. 제어문의 종류는 다음과 같다.
조건문 | 반복문 |
if 문, switch 문 | for 문, while 문, do-while 문 |
조건문은 정상 흐름으로 돌아오지만 반복문일 경우는 제어문 처음으로 다시 되돌아가 반속 실행한다. 이것을 루핑(looping)이라고 한다.
4.2 if 문
if 문은 조건식의 결과에 따라 블록 실행 여부가 결정된다.
if (조건식) {
// 조건식이 true이면 실행 후 빠져나감
// 조건식이 false이면 실행하지 않고 빠져나감
}
조건식에는 true 또는 false 값을 산출할 수 있는 연산식이나 boolean 변수가 올 수 있다. 조건식이 true이면 블록을 실행하고 false이면 블록을 실행하지 않는다.
if 문은 else 블록과 함께 사용되어 조건식의 결과에 따라 실행 블록을 선택할 수 있다. if 문의 조건식이 true이면 if 문 블록이 실행되고, false이면 else 블록이 실행된다.
if (조건식) {
// 조건식이 true이면 실행 후 빠져나감
// 조건식이 false이면 실행하지 않고 else 문으로 넘어감
} else {
// 조건식이 false일 때만 실행 후 빠져나감
}
조건문이 여러 개인 if 문도 있다. else if는 상위 조건식이 false일 경우 평가되고, else if가 true이면 해당 블록이 실행된다. else if의 수는 제한이 없으며, 여러 개의 조건식 중 true가 되는 else if 블록만 실행하고 전체 if 문을 벗어나게 된다.
if (조건식1) {
// 조건식1이 true일 때만 실행 후 빠져나감
} else if (조건식2) {
// 조건식2이 true일 때만 실행 후 빠져나감
} else {
// 모든 조건식이 false일 때 실행 후 빠져나감
}
if 문의 블록 내부에는 또 다른 if 문을 사용할 수 있다. 이것을 중첩 if 문이라 부르는데, 중첩의 단계는 제한이 없다.
if (조건식1) {
// 조건식1이 true이면 실행 후 빠져나감
// 조건식1이 false이면 실행하지 않고 else 문으로 넘어감
if (조건식2) {
// 조건식2가 true이면 실행 후 빠져나감
// 조건식2가 false이면 실행하지 않고 else 문으로 넘어감
} else {
// 조건식2가 false일 때 실행 후 빠져나감
}
} else {
// 조건식1이 false일 때 실행 후 빠져나감
}
4.3 switch 문
switch 문은 변수의 값에 따라 실행문에 결정되어 코드가 간결해진다.
switch(변수) {
// 변수가 값1일 경우
case 값1:
// 이 case 문 실행 후
break; // switch 문 멈추기
// 변수가 값2일 경우
case 값2:
// 이 case 문 실행 후
break; // switch 문 멈추기
// 변수가 값1, 값2 모두 아닐 경우
default:
// 이 경우 실행
}
switch 문은 괄호 안의 변수값에 따라 해당 case로 가서 실행문을 실행시킨다. 변수값과 동일한 값을 갖는 case가 없으면 default로 가서 실행문을 실행시킨다. default가 필요 없다면 생략 가능하다. break는 다음 case를 실행하지 않고 switch 문을 빠져나가기 위해 필요하다. break가 없다면 case 값과 상관없이 다음 case가 연달아 실행된다.
Java 12 이후부터는 switch 문에서 Expression(표현식)을 사용할 수 있다. Switch Expressions는 스위치된 값을 변수에 바로 대입할 수 있다. 중괄호를 사용할 경우에는 yield(Java 13부터 사용 가능) 키워드로 값을 지정하면 된다. 단, 이 경우에는 default가 반드시 존재한다.
타입 변수 = switch(grade) {
case "값1" -> 변수값;
case "값2" -> {
···;
yield 변수값;
}
default -> 변수값;
};
4.4 for 문
똑같은 실행문을 반복적으로 실행해야 할 경우 for 문을 사용하면 코드를 획기적으로 줄일 수 있다.
for (①초기화식; ②조건식; ④증감식) {
// 조건식이 true일 경우
③실행문; // 실행문 실행 후 빠져나감
// 조건식이 false일 경우 for 문 종료
}
for 문이 처음 실행될 때, ①초기화식이 제일 먼저 실행된다. 그 후 ②조건식을 평가해서 true이면 ③실행문을 실행시키고 ④증감식이 실행된다. 그리고 다시 ②조건식을 평가한다. ②조건식이 false이면 for 문을 종료하고 블록을 건너뛴다.
초기화식은 조건식, 실행문, 증감식에서 사용할 변수를 초기화하는 역할이다. 초기화식에서 선언된 변수는 for 문 블록 안에서만 사용되는 로컬 변수이다. 초기화식과 증감식이 둘 이상 있을 경우 쉼표(,)로 구분해서 작성한다.
4.5 while 문
while 문은 조건식이 true일 경우 계속 반복하고, false가 되면 반복을 멈추고 while 문을 종료한다.
while (①조건식) {
// 조건식이 true일 경우 실행
// 조건식이 false일 경우 실행하지 않고 while 문 종료
②실행문;
}
while 문이 처음 실행되고 ①조건식을 평가한다. 평가 결과가 true이면 ②실행문이 모두 실행되고, 조건식으로 되돌아가서 ①조건식을 다시 평가한다. false라면 while문을 종료한다.
4.6 do-while 문
do-while 문은 블록 내부를 먼저 실행시키고, 실행 결과에 따라 반복 실행을 계속할지 결정한다.
do {
// 조건식이 true일 경우 실행
// 조건식이 false일 경우 실행하지 않고 do-while 문 종료
①실행문;
} while (②조건식);
do-while 문이 처음 실행될 때 ①실행문을 모두 실행되고, ②조건식을 평가한다. 결과가 true이면 ①→②와 같이 반복 실행하고, false이면 do-while 문을 종료한다.
4.7 break 문
break 문은 반복문을 실행 중지하거나 switch 문을 종료할 때 사용한다. 대개 if 문과 같이 사용되어 조건식에 따라 for 문과 while 문을 종료한다.
for (···) {
// 조건식이 true일 경우 실행
// 조건식이 false일 경우 실행하지 않고 for 문 실행 종료
break;
}
만약 반복문이 중첩되어 있을 경우 break 문은 가장 가까운 반복문만 종료하고 바깥쪽 반복문은 종료시키지 않는다. 중첩된 반복문에서 바깥쪽 반복문까지 종료시키려면 바깥쪽 반복문에 이름(레이블)을 붙이고, 'break 이름;'을 사용하면 된다.
4.8 continue 문
continue 문은 반복문에서만 사용되는데, 블록 내부에서 continue 문이 실행되면 for 문의 증감식 또는 그 외의 반복문의 조건식으로 바로 이동한다.
while (···) {
// 조건식이 true일 경우 실행
// 조건식이 false일 경우 실행하지 않고 for 문 실행 종료
continue;
}
반복문을 종료하지 않고 계속 반복을 수행한다. 대개 if 문과 같이 사용되는데, 특정 조건을 만족하는 경우에 continue 문을 실행해서 그 이후의 문장을 실행하지 않고 다음 반복으로 넘어간다.
'JAVA 개념 > Part 01; 자바 언어 기초' 카테고리의 다른 글
[이것이 자바다] Chapter 03. 연산자 │ 개념 (0) | 2024.06.05 |
---|---|
[이것이 자바다] CHAPTER 02. 변수와 타입 │ 개념 (0) | 2024.06.05 |
[이것이 자바다] CHAPTER 01. 자바 시작하기 (0) | 2024.05.31 |