[Java] 조건문과 반복문

2022. 6. 11. 16:12

▶ 조건문 (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문의 플로우는 다음과 같다.

  1. 조건식을 계산
  2. 조건식의 결과와 일치하는 case문으로 이동
  3. case내 코드 실행
  4. 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

BELATED ARTICLES

more