/ JAVAJUNGSUK

Ch4-13~14. for문

자바의 정석 기초편

0. 목차



Chapter4. 조건문과 반복문

Ch4 - 13. for문

Ch4 - 14. for문 예제



Ch4 - 13. for문


▶ for문이란?

▷ 조건을 만족하는 동안 블럭{}을 반복
▷ 반복횟수를 알 때 적합
for (①초기화; ②조건식; ④증감식) {
// 조건식이 참일 때, ③수행문 수행
}   // ⑤조건식이 거짓일 때, for문을 빠져나옴




Ch4 - 14. for문 예제


▶ 초기값 11; 1씩 증가; 5번 도는 for문?

▷ i = 11, 12, 13, 14, 15
for (int i = 11; i < 16; i++) {

    System.out.printf("[%d] ", i);
}

// console
i = [11] [12] [13] [14] [15]

▶ 초기값 1; 2씩 증가; 10번 도는 for문?

▷ i = 1, 3, 5, 7, 9, 11, 13, 15, 17, 19
for (int i = 1; i < 20; i = i + 2) {

    System.out.printf("[%d] ", i);
}

// console
i = [1] [3] [5] [7] [9] [11] [13] [15] [17] [19] 

▶ 초기값 1; 2배 씩 증가; 10번 도는 for문?

▷ i = 1, 2, 4, 8, 16, 32, 64, 128, 256, 512
for (int i = 1; i < 513; i = i * 2) {

    System.out.printf("[%d] ", i);
}

// console
i = [1] [2] [4] [8] [16] [32] [64] [128] [256] [512] 

▶ 초기값 10; 1씩 감소; 10번 도는 for문?

▷ i = 10, 9, 8, 7, 6, 5, 4, 3, 2, 1
for (int i = 10; i >= 1; i--) {

    System.out.printf("[%d] ", i);
}

// console
i = [10] [9] [8] [7] [6] [5] [4] [3] [2] [1] 
  • i <= 1??
    i <= 1 : i가 1보다 작거나 같을 때 까지
    i >= 1 : i가 1보다 크거나 같을 때 까지

  • i = 10; 10 <= 1??
    이건 처음부터 false
    그래서 i >= 1

▶ 초기값 i = 1, j = 10; i = 1씩 증가, j = 1씩 감소; 10번 도는 for문?

▷ i = 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
▷ j = 10, 9, 8, 7, 6, 5, 4, 3, 2, 1
for (int i = 1, j = 10; i <= 10; i++, j--) {
			
    System.out.println("i = " + i + ", j = " + j);
}

// console
i = 1, j = 10
i = 2, j = 9
i = 3, j = 8
i = 4, j = 7
i = 5, j = 6
i = 6, j = 5
i = 7, j = 4
i = 8, j = 3
i = 9, j = 2
i = 10, j = 1
  • i와 j의 타입이 같아야 사용가능
  • i와 j는 for문 내에서만 사용가능 - 외부사용 불가
▷ 변수의 범위(scope) : 선언위치부터 선언된 블럭{}의 끝까지
  • for문 내부에서 변수i 선언
      for (int i = 1; i < 10; i++) {  // for () {_} → 변수의 범위
      // i의 범위는 여기까지
      }
      System.out.println(i)   // 에러, 변수의 범위를 벗어남
    
  • for문 외부에서 변수j 선언
      publid static void main(String args[]) {
      
          int j;  // main() {_} → 변수의 범위
            
          for (j = 1; j < 10; j++) {
            
          }
      
      System.out.println(j) // 사용가능, j의 범위는 여기까지라서
      }
    
변수의 범위는 좁을 수록 좋다
변수의 값이 잘못되었을 때 확인해야하는 범위가 좁으니까


▶ for문이 무한반복이 되는 경우

▷ 조건식 생략
▷ for문에 true 값을 넣은 경우


▶ sum에 1부터 1씩 커지는 수를 5까지 더하기 → 반복문으로 만들기

▷ sum = sum + 1; sum = sum + 2; … sum = sum + 5;
public static void main(String[] args) {
    
    int sum = 0;
    
    for (int i = 1; i <= 5; i++) {

        System.out.printf("%d + ", sum);
        
        sum += i;
        
        System.out.printf("%d = %d\n", i, sum);
    }
}

// console
0 + 1 = 1
1 + 2 = 3
3 + 3 = 6
6 + 4 = 10
10 + 5 = 15