선택문은 조건을 걸고 해당 조건에서만 실행되는 로직이 있는 경우 사용한다.
조건식이 참이면 if 내부의 문장이 실행되고, 조건식이 거짓이면 if문을 벗어난다.
if문과 if-else문이 있다.
int a = 4;
if (a == 4) { // a = 4가 참이면 아래 문장을 실행
System.out.println("a = 4 입니다.");
}
int a = 4;
if (a == 4) { // a = 4가 참이면 아래 문장을 실행
System.out.println("a = 4 입니다.");
} else if (a > 4) { // a = 4가 거짓이고 a > 4가 참이면 아래 문장을 실행
System.out.println("a = 4 가 아닙니다.");
} else { // a = 4와 a > 4가 거짓이면 아래 문장을 실행
System.out.println("a = 4 가 아닙니다.");
}
if-else 문에서는 조건문을 직접 설정할 수 있어서 특정 변수의 값의 범위를 지정할 수 있지만 switch문에서는 그렇게 할 수 없다.
int a = 5;
if (a <= 5) { // 가능
System.out.println("5 이하");
}
switch (a) {
case a <= 5: // 불가능
System.out.println("5 이하");
}
switch문에서는 변수나 조건문의 결과가 case문에서 지정한 값과 같은지 동등비교만 할 수 있다.
break 키워드는 로직 실행을 종료할 수 있다. 로직은 switch문이 종료되거나 break 키워드를 만날 때까지 실행된다.
if-else문은 위에서부터 차례대로 비교하면서 조건문을 비교하지만 switch문은 변수나 조건문의 결과값으로 case문을 바로 찾아간다. 만일 어떤 case문으로도 분기하지 못하는 경우는 default문을 실행한다.
char grade = 'B';
switch (grade) {
case 'A':
System.out.println("제일 높은 등급입니다.");
break;
case 'B':
System.out.println("두번째 높은 등급입니다."); // 출력
break;
case 'C':
System.out.println("세번째 높은 등급입니다.");
break;
default:
System.out.println("잘못된 등급입니다.");
}
switch문을 사용하면 표현하기도 좋고, 가독성이 좋다.
반복문은 로직을 조건문에 맞게 반복해준다.
반복하는 횟수가 정해진 경우에 쓰인다.
for (초기문; 조건식; 반복 후 작업) {
작업문
}
초기문
for문의 조건식에서 사용하는 변수를 초기화한다. 처음 한번만 수행되며, for문 안에서만 쓰이는 지역변수를 선언할 수 있다.
조건식
논리형 변수나 논리연산만을 사용할 수 있다. 조건식의 결과가 true인 경우 반복이 계속되고, 조건식의 결과가 false인 경우 반복이 종료되어 for문에서 벗어난다.
조건식이 비어있거나, true인 경우 무한 반복된다.
반복 후 작업
작업문이 실행된 후 반복 후 작업이 실행된다. 작업문에 콤마로 분리하여 반복이 한 번 끝나고 난 뒤에 작업할 일들을 나열할 수 있다.
java 1.5 이상부터 사용이 가능하다.
for문과 비슷하지만 훨씬 더 직관적이다.
for (변수 변수이름 : 배열or컨테이너) {
작업문
}
변수가 배열 혹은 컨테이너의 처음부터 끝까지 돌면서 작업문을 실행한다.
반복 조건을 처음부터 따지는 경우에 사용된다.
for문과 다르게 while문 조건식에 사용되는 변수는 선언과 초기화가 반드시 되어있어야 한다.
반복문이 실행되면서 조건식을 false로 만들 수 있도록 설계되어야한다. 그렇지 않으면 무한반복된다.
int i = 0; // 변수의 선언 및 초기화
while (i <= 5) {
System.out.println("i = " + i);
i++;
}
while (true) { // 무한반복
System.out.println("Hello");
}
while (조건식) {
작업문
}
반본 조건을 나중에 따지는 경우에 사용된다.
while문과 달리 최초 한번은 무조건 실행한다.
while문과 같이 do-while문에 쓰이는 변수는 선언과 초기화가 반드시 되어있어야 한다.
do {
작업문
} while (조건식)