
[Must Have] 이재환의 자바 프로그래밍 입문 책을 읽고 정리한 글입니다.
💡 학습 목표
자바에서 다루는 다양한 제어문을 알아보자.
조건문은 조건식의 결과가 true인 경우와 false인 경우의 두 가지 흐름을 만들어 낼 수 있다.
자바에서 다음 세 가지 방법으로 조건을 분기킬 수 있다.
if (x > 1) if (true)
{ {
... => ...
} }
컴퓨터의 동작 순서는 x > 1을 비교 연산한다. 그리고 if문은 조건식의 연산 결과가 true이면 중괄호 안의 내용을 실행한다.
switch문을 사용하면 많은 선택지를 가지는 분기 처리를 할 수 있다.
조건식의 결과와 일치하는 case 문제 작성된 문장을 실행한다. 조건식의 값이 어떤 case와도 맞지 않으면 default로 넘어가게 된다. 각 case의 마지막에는 break문을 사용해서 선택한 처리만을 실행하도록 한다.
switch문 기본 사용법
int n = 4;
switch(n % 3)
{
case 1:
System.out.println("나머지가 1");
break;
case 1:
System.out.println("나머지가 2");
break;
default;
System.out.println("나머지가 0");
}
switch문의 조건식에는 연산식을 넣을 수도 있고 그냥 변수만 넣을 수도 있다.
조건의 분기가 많을 때는 if문을 사용한 조건 분기보다 편하게 사용할 수 있다.
반복문은 어떤 조건이 성립하는 동안 반복 처리를 실행하는 제어문이다. 자바에서 반복문을 다음 세 가지 방법으로 만들 수 있다.
반복문도 중괄호 안의 영역에서 실행되는 수행문이 하나만 있으면 중괄호르 생략할 수 있다.
for(int i = 2; i < 10; i++) {
System.out.print((2 * i) + " ");
}
// 위 코드를 아래같이 작성할 수 있다.
for(int i = 2; i < 10; i++)
System.out.print((2 * i) + " ");
// 같은 줄에 작성 가능, 실행 문장의 끝은 세미클론 ";"으로 구분
for(int i = 2; i < 10; i++) System.out.print((2 * i) + " ");
for문을 구성하는 요소는 상황에 따라 생략 가능하다. 증감식에는 보통 ++ 등 단항식을 이용하는데 구체적인 산술 연산식을 작성할 수도 있다.
int i = 0;
for( ; i < 10; i++) { // 초기식 생략
}
i = 0;
for( ; i < 10; ) { // 초기식, 증감식 생략
}
for(int j = 0; j < 10; j = j + 2) { // 증감식 대신 연산 수식
}
while문은 반복의 횟수보다는 처리 조건이 정해져 있을 때, for문은 반복의 횟수가 정해져 있는 때 사용하면 좋다.
while문과 if조건문을 섞어 사용한 예제
int num = 0;
int count = 0;
while((num++) < 100) {
if((num % 5) != 0) // 5의 배수가 아니면 위로 이동
continue;
if((num % 7) != 0) // 7의 배수가 아니면 위로 이동
continue;
count++; // 5오 ㅏ7의 배수이면 실행
System.out.print(num); // 5와 7의 배수이면 실행
}
while문은 먼저 조건식을 평가하기 때문에 첫 번째 반복의 조건식의 결과가 false이면 while문이 수행되지 않을 수 있다.
그에 반해 do~while문은 조건식을 아래쪽에 쓰기 때문에 최소 한 번은 중괄호 안의 문장들이 실행된다.
int num = 0;
int count = 0;
do
{
num++;
System.out.println(num);
} while(num < 100);
여러 개의 중첩된 반복문에서는 코드 실행 중간에 break문을 만나면 가장 가까운 반복문을 빠져 나가게 된다.
중첩된 반복문의 안쪽 반복문에서 바깥쪽의 모든 반복문까지 중지하고 다음 코드를 실행하고 싶을 경우엔 레이블을 이용한 반복문의 중지 기능을 사용한다.
반복문에 레이블을 지정하고 break에 레이블 이름을 지정한 예제
int sum = 0;
myExit: while (true){
for(int i = 0; i < 100; i++){
if(sum > 2000){
break myExit; // myExit 반복문까지 한 번에 빠져 나온다.
}
}
}