[Java] 조건문과 반복문
▶ 조건문 (if, switch)
1. if문
만일(if) 조건식이 참(true)이면 괄호 { } 안의 문장들을 수행한다.
if (조건식) {
// 조건식이 참일 때 수행될 문장들을 적는다.
}
2. 블럭
괄호 { }를 이용해 여러 문장을 하나의 단위로 묶을 수 있다. 이를 블럭(block) 이라 한다.
블럭 내의 문장들은 탭으로 들여쓰기를 해서 블럭 안에 있는 문장이라는 것을 알기 쉽게 해야한다.
3. if-else문
'else'의 뜻이 '그 밖의 다른'이므로 조건식의 결과가 참이 아닐 때 else 블럭의 문장을 수행한다.
4. if-else if문
처리해야할 경우의 수가 세가지 이상일 땐, else if로 조건식을 추가해서 사용한다.
조건식이 참인 경우가 하나도 없을 때는 마지막에 else블럭을 통해 처리한다.
else 블럭을 생략할 수도 있는데, 그러면 if-else if문의 어떠한 블럭도 실행되지 않을 수 있다.
5. 중첩 if문
if문의 블럭 내에 또다른 if문을 포함시킬 수 있다. 중첩의 횟수에는 제한이 없다.
if문이 여러개이기 때문에 괄호 { }와 들여쓰기를 통해 구분을 확실히 해야 코드를 이해하기 쉽다.
6. switch문
switch문의 플로우는 다음과 같다.
- 조건식을 계산
- 조건식의 결과와 일치하는 case문으로 이동
- case내 코드 실행
- break문이나 switch문의 끝을 만나면 탈출
간혹 break문을 고의로 생략하는 경우도 있다.
switch (level) {
case 3:
grantDelete(); // 삭제 권한 부여
case 2:
grantWrite(); // 쓰기 권한 부여
case 1:
grantRead(); // 읽기 권한 부여
}
회원의 등급에 따라 부여될 권한을 case문의 특징을 통해 부여한다.
위 코드대로 실행되면 제일 높은 등급 3을 가진 회원은 삭제, 쓰기, 읽기 권한 모두 부여되며, 등급 1을 가진 회원은 읽기 권한만 가지게 된다.
switch문의 제약조건
- switch문의 조건식 결과는 정수 또는 문자열이어야 함.
- case문의 값은 정수, 상수만 가능하며 중복되지 않아야 함.
if와 switch
if문은 경우의 수가 많아질수록 else-if를 추가하게 되어 복잡해지고, 여러 조건식을 계산해야하므로 비용이 많이 들 수 있다.
이러한 경우 switch문은 단 하나의 조건식으로 많은 경우의 수를 처리할 수 있어 비용이 적게 들고, 표현도 간결하므로 이해하기 쉽다.
▶ 반복문 (for, while, do-while)
1. for문
for문은 반복 횟수를 알고 있을 때 유용하다.
구조가 조금 복잡하지만 직관적이라 이해하기 쉽다.
for문의 구조와 수행 순서
for (초기화; 조건식; 증감식) {
// 조건식이 참일 때 수행될 문장
}
향상된 for문
JDK 1.5부터 향상된 for문이 추가되었다.
for (타입 변수명 : 배열 또는 컬렉션) {
// 반복할 문장
}
향상된 for문은 더 간결하다는 장점이 있지만, 배열이나 컬렉션 요소들을 읽어오는 용도로만 사용할 수 있다.
2. while문
while문은 조건식이 '참인 동안' 블럭 내 문장을 수행한다.
while문의 조건식은 생략할 수 없다.
while (조건식) {
// 조건식의 연산결과가 참(true)인 동안, 반복될 문장들을 적는다.
}
for문과 while문
초기화나 증감식이 필요한 경우, for문을 사용하는 것이 가독성이 더 좋다.
그렇지 않은 경우, while문을 사용하는 것이 더 적합하다.
3. do-while문
do-while문은 while문의 변형으로 조건식과 블럭의 순서를 반대로 바꾼 것이다.
블럭 내의 문장을 먼저 수행한 후 조건식을 평가하기 때문에, 최소한 한번은 수행되는 것을 보장한다.
do {
// 조건식이 참일 때 반복 수행될 문장
} while (조건식); // 끝에 세미콜론 ;을 붙여야 함
3. break문
break문은 자신이 포함된 반복문 중 가장 가까운 반복문에서 탈출한다.
주로 if문과 함께 사용된다.
4. continue문
continue문은 반복문 내에서만 사용될 수 있다.
반복 진행 중에 continue문을 통해 반복문의 끝으로 이동하여 다음 반복으로 넘어간다.
for문의 경우 증감식으로 이동하고 while, do-while문의 경우 조건식으로 이동한다.
5. 이름 붙은 반복문
break문은 최근접한 하나의 반복문만 탈출이 가능하기 때문에, 여러 반복문이 중첩된 경우 반복문에 이름을 붙여 특정 반복문을 탈출시킬 수 있다. for, while문 모두 이름을 붙일 수 있다.
public static void main(String[] args) {
// for문에 Loop0 이름을 붙임.
Loop0: for (int i=2; i<=9; i++) {
for (int j=1; j<=9; j++) {
if (j==5)
break Loop0;
...
continue Loop0;
...
}
}
}
위 코드는 for문에 Loop0 이라는 이름을 붙여 중첩 반복문 실행 도중에 밖에 있는 반복문을 탈출할 수 있게끔 해주었다.
break 및 continue도 반복문의 이름을 사용할 수 있다.
'BackEnd > Java' 카테고리의 다른 글
[Java] 배열 (0) | 2022.06.19 |
---|---|
[Java] 연산자 (0) | 2022.06.06 |
[Java] 변수 (Variable) (0) | 2022.05.29 |
[Java] JVM (0) | 2022.04.30 |
[Java] Java란? (0) | 2022.04.30 |