기본 이해
- 정의: 프로그램의 실행 흐름을 제어하는 문장
- 비유:
- 조건문 = 교차로의 신호등
- 반복문 = 회전 교차로
- 분기문 = 비상구/탈출로
- 작동방식:
- 순차적 실행 흐름을 조건/반복/분기에 따라 변경
- 코드 블록 단위로 실행 여부 결정
핵심 구성요소
조건문
- if문: 단일 조건 검사
- if-else문: 양자 택일
- if-else if문: 다중 조건 검사
- switch-case문: 값 기반 다중 분기
반복문
- for: 정해진 횟수 반복
- while: 조건 기반 반복
- do-while: 최소 1회 실행 보장
- enhanced for: 컬렉션 순회
분기문
- break: 반복문/switch문 탈출
- continue: 현재 반복 건너뛰기
- return: 메소드 종료
존재 이유와 목적
- 동적 프로그램 흐름 제어 필요성
- 코드 재사용성 향상
- 조건별 다른 처리 가능
- 반복 작업 자동화
주의사항과 일반적 오류
초보자 실수:
- 무한루프 발생
- 조건식 논리 오류
- 중괄호 {} 누락
- break/continue 혼동
안티패턴:
- 과도한 중첩
- 복잡한 조건식
- 불필요한 else 사용
- switch문 break 누락
디버깅 포인트:
- 조건식 결과값
- 반복문 진입/탈출 조건
- 변수값 변화
- 실행 흐름 추적
비교 분석
제어문 | 사용시기 | 장점 | 단점 |
---|---|---|---|
if | 단순 조건 | 직관적 | 다중조건시 복잡 |
switch | 값 기반 분기 | 가독성 좋음 | 제한된 타입만 사용 |
for | 횟수 기반 | 초기화/조건/증감 통합 | 유연성 부족 |
while | 조건 기반 | 유연한 반복 | 무한루프 위험 |
do-while | 최소 1회 실행 | 진입 보장 | 사용빈도 낮음 |
실무 활용
실제 적용 사례:
- 사용자 입력 검증
- 데이터 처리 루프
- 메뉴 시스템 구현
- 게임 로직 제어
- 파일 처리 작업
// 로그인 검증
public boolean validateLogin(String id, String pwd) {
if (id == null || pwd == null) {
return false;
}
if (id.length() < 4 || pwd.length() < 8) {
return false;
}
return checkDatabase(id, pwd);
}
// 데이터 처리
for (Customer customer : customerList) {
if (!customer.isActive()) {
continue;
}
processOrder(customer);
}
// 메뉴 시스템
switch(userChoice) {
case 1: createAccount(); break;
case 2: deleteAccount(); break;
case 3: viewBalance(); break;
default: showMenu(); break;
}
베스트 프랙티스:
- 조건문은 긍정문으로 작성
- 중첩 수준 3단계 이하 유지
- early return 패턴 활용
- 복잡한 조건은 메소드로 분리
- switch문 default 항상 포함
이전 개념:
- 변수와 데이터 타입
- 연산자
- 표현식과 문장
후속 개념:
- 배열과 컬렉션
- 메소드
- 객체지향 프로그래밍 기초
'Java > 자바 학습' 카테고리의 다른 글
Java의 this 키워드 (1) | 2025.05.18 |
---|---|
break와 continue 상세 설명 (0) | 2025.05.18 |
연산자(Operators) (0) | 2025.05.18 |
명시적 형변환 vs 암시적 형변환 (2) | 2025.05.18 |
지역변수와 멤버변수 (0) | 2025.05.17 |