🌈 프로그래밍 언어/자바

[Java] 자바 반복문 - for, while, do-while 완벽 가이드

Gyunny 2024. 5. 24. 20:17
728x90
반응형

🌈 반복문 개요

반복문은 특정 조건을 만족하는 동안 동일한 코드 블록을 반복 실행하는 구조입니다. 자바에서는 대표적으로 for문, while문, do-while문이 있으며, 반복 구조와 조건 검사 위치에 따라 동작 방식이 달라집니다.

✈️ for문 - 반복 횟수가 정해진 경우

for문은 반복 횟수를 알고 있을 때 사용하기 적합합니다. 기본 구조는 아래와 같습니다.

조건식이 참일 때마다 블록 내 문장이 반복적으로 수행되며, 조건식이 거짓이 될 때 반복문을 탈출합니다.

for(초기화; 조건식; 증감식) {
    // 조건식이 참일 때 수행될 문장을 작성합니다.
}
  • for문의 구성 요소
    • 초기화 : 반복문에 사용할 변수를 선언하고 초기화합니다. (반복문 실행 시 최초 1회만 수행)
    • 조건식 : 반복을 계속할 조건을 설정하며, false가 되면 반복문이 종료됩니다.
    • 증감식 : 반복이 실행될 때마다 변수의 값을 변경하여 조건을 만족하지 않도록 유도합니다.
for (int i = 0; i < 5; i++) {
    System.out.println("i의 값: " + i); // 0부터 4까지 출력
}

🔄  중첩 for문

for문 안에 또 다른 for문을 넣어 이중 반복을 수행할 수도 있습니다.

이 방법을 통해 다차원 배열을 순회하거나, 표 형태의 데이터를 처리할 수 있습니다.

for (int i = 0; i < 3; i++) {
    for (int j = 0; j < 3; j++) {
        System.out.println("i: " + i + ", j: " + j);
    }
}

💎 while문 - 조건 기반 반복

while문은 조건식이 참(true) 일 경우 계속 반복되는 구조입니다. 반복 횟수가 불확실할 때 유용합니다.

int i = 0;
while (i < 5) {
    System.out.println("i의 값: " + i); // 0부터 4까지 출력
    i++;
}
‼️무한 루프 주의
조건식이 항상 참(true)이면 반복이 종료되지 않는 무한 루프에 빠질 수 있으므로, 종료 조건을 반드시 설정해야 합니다.

🔥 do-while문 - 최소 한 번 실행 보장

do-while문은 반복문을 최소 한 번 실행하는 것이 보장되는 구입니다.

int i = 0;
do {
    System.out.println("i의 값: " + i); // 0부터 4까지 출력
    i++;
} while (i < 5);

✅ 반복문의 선택 기준

  • for문 : 반복 횟수를 알고 있을 때 사용 (초기화, 조건식, 증감식 포함)
  • while문 : 반복 횟수를 알 수 없고, 특정 조건을 만족할 때까지 반복해야 할 때 사용
  • do-while문 : 최소 한 번은 실행이 보장되어야 할 때 사용

🤔 왜 개발자들은 while문보다 for문을 선호할까?

많은 개발자들이 반복문을 작성할 때 while문보다 for문을 선호하는 경향이 있습니다. 그 이유는 다음과 같습니다.

  • 1️⃣ 코드 가독성 : for문은 반복에 필요한 모든 요소(초기화, 조건, 증감)를 한 줄에 정리해 직관적입니다.
// for문 - 한눈에 알아보기 쉽습니다.
for (int i = 0; i < 5; i++) {
    System.out.println(i);
}

// while문 - 요소들이 흩어져 있어 가독성이 떨어집니다.
int i = 0;
while (i < 5) {
    System.out.println(i);
    i++;
}
  • 2️⃣ 실수 방지 : for문은 반복 제어 요소들이 헤더에 모여있어 실수할 여지가 적습니다. 반면, while문은 증감식을 빼먹거나 잘못된 위치에 작성하기 쉽고, 이로 인해 무한 루프에 빠질 위험도 있습니다.
  • 3️⃣ 변수 관리 효율 : for문의 초기화 변수는 반복문 내부로 스코프가 제한됩니다. 반면 while문은 반복 변수가 외부에 선언되어 메모리를 더 오래 차지하게 됩니다.
// for문의 변수 i는 반복문이 끝나면 사라짐
for (int i = 0; i < 5; i++) {
    System.out.println(i);
}

// while문에서는 i가 반복문 밖에서도 존재
int i = 0;
while (i < 5) {
    System.out.println(i);
    i++;
}
System.out.println("반복문 종료 후 i의 값: " + i); // i는 여전히 존재

✨ while문이 필요한 경우

  • ✅ 파일을 끝까지 읽어야 할 때 필요합니다.
Scanner scanner = new Scanner(System.in);
while (scanner.hasNextLine()) {
    String line = scanner.nextLine();
    System.out.println(line);
}
  • ✅ 사용자의 입력을 계속 받아야 할 때 필요합니다.
Scanner scanner = new Scanner(System.in);
String input;
while (!(input = scanner.nextLine()).equals("exit")) {
    System.out.println("입력: " + input);
}
System.out.println("프로그램 종료");
  • ✅ 특정 조건이 만족될 때까지 반복해야 할 때 필요합니다.
Random random = new Random();
int number;
do {
    number = random.nextInt(10);
    System.out.println("생성된 숫자: " + number);
} while (number != 7);  // 7이 나올 때까지 반복

🎛️ 반복문 제어 키워드 (break & continue)

반복문은 실행 중 특정 조건에 따라 break와 continue 키워드를 사용해서 흐름을 제어할 수 있습니다.

  • break : 반복문을 즉시 종료하고, 반복문 다음의 코드로 이동합니다.
  • continue : 반복문의 현재 수행을 중단하고, 다음 반복으로 넘어갑니다.
for (int i = 0; i < 10; i++) {
    if (i == 5) {
        break; // i가 5일 때 반복문 종료
    }
    System.out.println("i: " + i);
}

for (int i = 0; i < 10; i++) {
    if (i % 2 == 0) {
        continue; // i가 짝수면 다음 반복으로
    }
    System.out.println("i: " + i); // 홀수만 출력
}

🚀 결론

  • for문 : 반복 횟수가 정해진 경우 사용
  • while문 : 조건이 참이면 계속 반복, 반복 횟수를 알 수 없을 때 유용
  • do-while문 : 최소 한 번 실행 보장
  • break : 반복문 즉시 종료
  • continue : 특정 조건에서 현재 반복 건너뛰기

자바의 반복문을 활용하면 코드의 효율성가독성을 높이고 다양한 문제를 해결할 수 있습니다.

728x90
반응형