| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 가비지컬렉션
- 자바
- 알고리즘
- 개발자취업
- 자바기초
- 코딩공부
- 코딩테스트준비
- 자바프로그래밍
- Java
- 클린코드
- 파이썬
- 자료구조
- JVM
- 객체지향
- 알고리즘공부
- 코딩테스트
- HashMap
- 개발자팁
- 백준
- 메모리관리
- 프로그래밍기초
- 자바개발
- 정렬
- 코딩테스트팁
- 멀티스레드
- 예외처리
- 프로그래머스
- 자바공부
- 개발공부
- 코딩인터뷰
- Today
- Total
코드 한 줄의 기록
Java 반복문 완벽 가이드: for·while·do-while 그리고 향상된 for 활용법 본문
프로그래밍에서 반복문은 동일한 코드 블록을 여러 번 실행하고자 할 때 꼭 필요한 구조입니다. Java에서는 전통적인 for, while, do-while 세 가지 반복문과, 컬렉션 순회 시 유용한 향상된 for(enhanced for)가 제공됩니다. 이 글에서는 제가 직접 실습하며 정리한 예제와 주의할 점을 바탕으로, 각 반복문의 특징과 활용법을 상세히 살펴보고자 합니다. Java 입문자부터 중급 개발자까지 두루 참고할 수 있는 내용으로 구성했습니다.
for문: 가장 기본이 되는 반복 구조
for문은 초기화 → 조건 검사 → 반복 작업 → 증감식 순서로 실행됩니다. 반복 횟수가 명확할 때 주로 사용하죠. 예를 들어 1부터 10까지 숫자를 더하는 코드를 보겠습니다.
int sum = 0;
for (int i = 1; i <= 10; i++) {
sum += i;
}
System.out.println("1~10 합계: " + sum);
- 초기화:
int i = 1 - 조건 검사:
i <= 10 - 증감식:
i++
위 구조를 이용하면 인덱스 기반 반복에 최적화된 코드를 작성할 수 있습니다. 다만 무한 루프에 빠지지 않도록 증감식을 올바르게 설정해야 합니다.
다중 변수 활용하기
for문 초기화와 증감식에 변수 여러 개를 선언·수정할 수도 있습니다.
for (int i = 0, j = 10; i < j; i++, j--) {
System.out.printf("i=%d, j=%d%n", i, j);
}
위 예제는 i는 0부터 증가, j는 10부터 감소하며 두 변수가 교차할 때까지 반복합니다. 코드 가독성을 위해 너무 복잡한 로직은 메서드로 분리하는 것이 좋습니다.
while문: 조건 중심 반복
while문은 조건이 참인 동안 반복 블록을 실행합니다. 반복 횟수를 미리 알기 어려울 때 적합하죠.
int n = 1;
while (n <= 5) {
System.out.println("n = " + n);
n++;
}
- 반복이 시작되기 전 조건을 먼저 검사합니다.
- 조건이 false가 되면 즉시 반복을 종료합니다.
주의: 초기화와 증감식 관리
while은 반복 횟수를 제어하는 변수를 직접 다뤄야 합니다. 초기값 설정과 증감식을 빼먹으면 무한 루프에 빠집니다.
int count = 0;
while (true) {
System.out.println("count = " + count);
if (count == 3) {
break; // 탈출 조건
}
count++;
}
break를 사용해 명시적으로 반복을 종료할 수 있습니다. 다만 남용 시 코드 흐름이 복잡해질 수 있으니 가급적 깔끔한 조건문으로 대체하세요.
do-while문: 최소 한 번 실행 보장
do-while문은 최소 한 번 반복 본문을 실행한 뒤 조건을 검사합니다.
int input;
Scanner scanner = new Scanner(System.in);
do {
System.out.print("숫자를 입력하세요 (0 입력 시 종료): ");
input = scanner.nextInt();
System.out.println("입력한 값: " + input);
} while (input != 0);
scanner.close();
- 사용자가 입력할 때처럼 최소 한 번 실행해야 하는 상황에 유용합니다.
- 조건 검사 시점이 반복문 뒤에 위치합니다.
향상된 for문 (Enhanced for): 배열과 컬렉션 순회에 최적화
Java 5부터 지원된 향상된 for문은 배열과 Collection 프레임워크를 간결하게 순회합니다.
// 배열 순회
String[] fruits = { "사과", "바나나", "체리" };
for (String fruit : fruits) {
System.out.println(fruit);
}
// 리스트 순회
List<Integer> scores = Arrays.asList(90, 80, 70);
for (int score : scores) {
System.out.println("점수: " + score);
}
- 장점: 인덱스 변수를 직접 관리할 필요 없이 요소를 간편하게 순회
- 단점: 반복 중 컬렉션에 원소를 추가/삭제할 수 없음. (ConcurrentModificationException 주의)
만약 인덱스가 필요한 경우에는 전통적인 for문을 사용하거나 ListIterator를 활용하세요.
반복문 활용 팁과 모범 사례
- 무한 루프 방지: 반복 조건과 증감식이 잘못 설계되면 프로그램이 멈춥니다. 항상 탈출 조건을 점검하세요.
- 가독성 유지: 복잡한 반복 로직은 함수나 메서드로 분리해 책임을 분리합니다.
- 컬렉션 수정 주의:
for-each문 내에서 컬렉션을 수정하면 예외가 발생합니다. 안전하게 수정하려면Iterator사용을 고려하세요. - 병렬 처리: Java 8 이상에서는
Stream과parallelStream()을 이용해 반복 작업을 병렬로 수행할 수 있습니다. 예시:
List<String> names = Arrays.asList("Alice", "Bob", "Charlie");
names.parallelStream()
.filter(name -> name.startsWith("A"))
.forEach(System.out::println);
지금까지 for, while, do-while, 향상된 for까지 Java의 주요 반복문을 다뤄봤습니다. 각 반복문의 특징과 활용 사례를 정리하면 다음과 같습니다.
- for문: 반복 횟수 명확, 인덱스 기반 처리
- while문: 조건 중심, 반복 횟수 불명확 시 적합
- do-while문: 최소 한 번 실행 보장
- 향상된 for문: 배열/컬렉션 순회 간결
다음 단계로는 Java Stream API의 forEach(), map(), filter() 등 함수형 반복 기법을 학습해 보세요. 반복문을 적절히 선택하고, 가독성과 유지보수성을 높이는 코딩 습관을 길러 효율적인 Java 개발자가 되어 보시기 바랍니다!
[완벽 가이드] Java 연산자 종류와 우선순위 총정리 – 산술·비트·논리·비교·삼항 연산자
Java 개발자라면 연산자(operator)를 자유자재로 다루는 것은 필수 역량입니다. 각 연산자의 특징과 우선순위(precedence)를 정확하게 이해해야 복잡한 식(expression)에서도 의도한 결과를 얻을 수 있습
byteandbit.tistory.com
'JAVA' 카테고리의 다른 글
| Java 배열(1차원/다차원)과 Arrays 유틸리티 완벽 정리: 초보자부터 실무까지 한 번에! (0) | 2025.09.29 |
|---|---|
| Java 조건문 완벽 가이드: if vs switch, 그리고 최신 Switch 표현식 패턴 활용법 (0) | 2025.09.27 |
| [완벽 가이드] Java 연산자 종류와 우선순위 총정리 – 산술·비트·논리·비교·삼항 연산자 (0) | 2025.09.25 |
| 자바 표준 입력·출력 완전 정복: Scanner와 System.out 활용 가이드 (0) | 2025.09.24 |
| Java 기본 자료형과 래퍼 타입: 박싱/언박싱으로 알아보는 핵심 개념과 실무 활용법 (0) | 2025.09.23 |