[JAVA] JAVA의 For문에 대해

2025. 9. 23. 20:00·JAVA

오늘은 Java에서 수도없이 많이 쓰게 되는 For문에 대해 알아보고자 한다.

 

실습과제를 수행하면서도, 기본적으로 메서드를 구성하는데에도 자주 사용되는 이 for문에 대해 확실히 짚고 넘어가보자! 💪

 

Java의 for문 종류는 무엇이 있을까

Java의 for문에는 크게 4가지로 나눠져있다고 볼 수 있다.

  • 기본 for문  
for (int i = 0; i < 5; i++) {
	System.out.println(i);
    }
  • 구성요소 : for (초기식; 조건식; 증감식;) 으로 구성되며 조건을 만족할 때까지 반복해서 실행한다.
  • 특징 : 배열이나 컬렉션의 인덱스 기반에 접근 가능하다
  • 사용 예시 : 배열/리스트의 인덱스를 활용해야 하는 경우 자주 사용된다.
  • 향상된 for문(for-each문)
int[] arr = {10, 20, 30};
for (int num : arr) {
    System.out.println(num);
}
  • 구성요소 : for (타입 변수 : 배열/컬렉션)
  • 특징 : 인덱스 대신 요소 자체를 바로 꺼내온다.
  • 사용 예시 :  전체 요소를 순회할 때 (읽기 전용 목적)인 경우 자주 사용된다.
  • 중첩 for문 (Nested  for문)
for (int i = 0; i < 3; i++) {
    for (int j = 0; j < 3; j++) {
        System.out.println("i=" + i + ", j=" + j);
    }
}
  • 특징 : for문 안에 for문을 넣어 다차원적인 반복을 구현
  • 사용 예시 : 구구단, 2차원(행렬 개념) 배열 처리
  • 무한 for문 
for (;;) {
    System.out.println("무한 반복");
}
  • 특징 : 초기식/조건식/증감식 생략 → 조건 없이 계속 실행
  • 사용 예시 : 서버 대기 루프, 이벤트 처리 (종료 조건은 break로 제어함)

 

기본 for문과 다르게 다른 형태의 for문은 어떤 장단점을 갖고 있을까? 

  • for-each문
    • 장점
      • ① 코드가 간결하다 (인덱스 관리가 필요하지 않음)
        • 인덱스 값(i) 선언,증가,조건 확인 필요 없음
      • ② 가독성이 좋다 → 배열/리스트를 돌면서 각 요소에 대해 작업한다는 의도가 명확함
      • ③ IndexOutOfBoundsException 같은 인덱스 실수 방지
        🧐 IndexOutOfBoundsException가 뭔가요? 
        → 배열 내에서 유효하지 않은 값으로 접근할 때 발생하는 예외처리 에러 
    • 단점
      • ① 인덱스를 직접 접근할 수 없다.
        • 현재 몇 번째 요소인지 알 수 없음
        • 특정 인덱스부터 시작/끝까지 순회하는 제어 불가
      • ② 요소 수정/삭제에 불편
        • arr[i] = 값 같은 방식으로 직접 수정하려면 기본 for문 필요
        • List의 특정 위치에서 제거하려면 Iterator나 for문이 필요
      • ③ 읽기 전용 순회에 적합
        • 값 변경이나 복잡한 제어에는 불리함
  • 중첩 for문 (Nested for문)
    • 장점
      • ① 다차원 데이터 처리 용이
        • 2차원 배열, 표, 행렬, 구구단 같은 구조를 다룰 때 자연스럽게 표현 가능
      • ② 명확한 구조
        • 바깥 반복문과 안쪽 반복문의 역할이 분명해 논리적으로 구분된 반복 작업 표현 가능
    • 단점
      • ① 복잡도 증가
        • 반복문이 중첩될수록 코드가 길어지고 읽기 어려워짐
        • 잘못 설계하면 가독성 저하
      • ② 성능 문제
        • 시간 복잡도가 곱셈으로 증가, 대량 데이터에서는 성능 저하 발생
      • ③ 유연성 부족
        • break/continue 제어 시 특정 루프만 빠져나가기 어렵고 가독성이 나빠짐
  • 무한 for문
    • 장점
      • ① 조건 없이 반복 가능
        • 서버 대기, 게임 루프, 이벤트 감시 등 종료 시점을 명확히 정할 수 없는 경우 유용
      • ② 코드 단순화
        • for( ; ; ) 혹은 while(true) 한 줄로 무한 반복 구조를 표현 가능
    • 단점
      • ① 종료 제어 필요
        • break, return, 예외 처리 같은 탈출 장치가 반드시 필요
        • 그렇지 않으면 프로그램이 영원히 멈추지 않고 실행됨
      • ② 자원 낭비
        • 무한히 돌면 CPU와 메모리를 계속 소모 → 종료 조건 미비 시 버그/다운 원인
      • ③ 실수 위험
        • 의도치 않게 무한 루프에 빠져버리면 디버깅 난이도 상승

for문과  while문은 언제 어느 상황에 쓰는 것이 좋을까?

  • 반복 횟수가 정해져 있을 때 : for문 사용
    • 예) 배열/리스트 인덱스 순회, 10번 반복하기, 구구단 출력 등..
  • 반복 횟수를 알 수 없고, 조건에 따라 멈출 때 : while문 사용
    • 예) 사용자 입력 대기, 서버 연결 유지, 특정 조건 충족 시 종료

 

💡내용을 정리하며 알게된 것

for문의 종류와 for문과 while문의 차이를 인지하고 어느 반복문을 사용해야 하는지에 대해 확실히 짚고 넘어갈 수 있었음

무조건 for-each문이 사용성이 높은 것이 아닌 조건과 동작환경에 따라서 사용해야하는 for문의 종류가 다양해질 수 있음을 알게 되었음

'JAVA' 카테고리의 다른 글

[JAVA] 배열 개념 확장 정리  (1) 2025.09.25
[JAVA] String.format에 대해 알아보기  (0) 2025.09.23
[JAVA] 객체 지향 프로그래밍 개념 정리 (OOP)  (0) 2025.09.19
[JAVA] JSP vs Thymleaf 개념 더 알아보기  (0) 2025.09.19
[JAVA] Enum이란?  (0) 2025.09.18
'JAVA' 카테고리의 다른 글
  • [JAVA] 배열 개념 확장 정리
  • [JAVA] String.format에 대해 알아보기
  • [JAVA] 객체 지향 프로그래밍 개념 정리 (OOP)
  • [JAVA] JSP vs Thymleaf 개념 더 알아보기
stark77
stark77
하마의 IT 자기개발 이모저모, 백엔드 개발자로 거듭나기
  • stark77
    하마의 개발자 성장일기
    stark77
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 컴퓨터구조와 운영체제
        • 컴퓨터구조
        • 운영체제
      • SQL 기초
      • Spring
        • 백엔드 기초
        • Spring 실습
      • JAVA
        • Java 실습
      • HTML&CSS
        • HTML&CSS 실습
      • Git&GitHub
        • Git&GitHub 실습
      • 내배캠 끄적끄적
        • Today I Learned
      • 유용한 툴 및 사이트 정리
      • 취미
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    jsp
    실시간 데이터 처리
    HTML&CSS
    Spriingboot
    웹소켓
    객체지향
    백엔드 기초
    Java 문법기초
    Stomp
    Spring
    BEAN
    객체지향프로그래밍
    백엔드 기초다지기
    경합조건과 교착상태
    Til
    WebSocket
    String.format
    네트워크 기초
    다형성
    SpringSecurity
    MVC
    thymleaf
    java
    algorithm
    git
    JPA
    프로세스와 쓰레드
    for문
    Github
    RestTemplate
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
stark77
[JAVA] JAVA의 For문에 대해
상단으로

티스토리툴바