언어(Programming Language)/Java

[Java] 반복문 for 문 for each 문

RyanSin 2021. 1. 23. 18:33
반응형

- 지난 시간

안녕하세요. 지난 시간에는 while문에 대해 알아봤습니다.

 

혹시 놓치고 오신 분들은 아래 링크를 통해 확인하고 오는 걸 추천드리겠습니다.

any-ting.tistory.com/27

 

[Java] 반복문 while 문

- 지난 시간 안녕하세요. 지난 시간에는 조건문에 대해 알아봤습니다. 혹시 놓치고 오신 분들은 아래 링크를 통해 확인하고 오는 걸 추천드리겠습니다. any-ting.tistory.com/26 [Java] 조건문 If문 switch/c

any-ting.tistory.com

 

- 개요

프로그래밍을 하다 보면 반복적인 코드나 반복적인 작업을 하게 됩니다.

 

만약 반복문이라는 기술이 없었다면... 정말 반복적인 작업을 계속해야 됩니다. (실질적으로 개 짜증입니다...)

 

이번 시간에는 이런 반복적인 노가다 작업을 줄여줄 반복문에 대해 알아보겠습니다.

 

자바에서는 3가지 방법이 있습니다.

 

  1. while 문
  2. for 문
  3. for each 문

이번 시간에는 for문과 for each문에 대해 알아보겠습니다.

 

- 사용법

for 문 기본 문법

for문은 "for(초기값; 조건문; 초기 증가값;)" 으로 설정할 수 있습니다.

머릿속에 바로 그려지지 않으실 것 같아서 바로 예시를 보여드리겠습니다.

 

package com.company;

public class Main {

    public static void main(String[] args) {

        int coffee = 10; // 커피 양
        int money = 10; // 돈

        System.out.println("for문 실행");
        for (int i = 0; i < money; i++) {

            coffee--;
            System.out.println("남은 커피의 양은 " + coffee + "입니다.");

            if(coffee == 0){
                System.out.println("장사 끝!! :) ");
            }

            System.out.println("힘들다... 힘내자!!");
        }
        System.out.println("for문 끝!");
    }
}

 

결과 콘솔화면

위 예시를 설명하겠습니다.

 

초기 값은 0이고 조건은 i < money 보다 작을 때까지 반복문이 실행되면서 실행될 때마다 초기 증가 값이 실행되면서

i 값은 증가됩니다. (1씩 증가!!)

 

그리고 i 값이 10이 되면 if 조건문[ if(coffee == 0) ]이 한번 실행되고 반복문을 빠져나오게 됩니다.

 

for 무한 루프

for문도 무한루프로 실행할 수 있습니다.

 

package com.company;

public class Main {

    public static void main(String[] args) {
        for(;;){
            System.out.println("for문 무한 반복...");
        }
    }
}

 

for(;;) 세미콜론 두 개를 넣으면 무한루프가 됩니다.

for문 빠져나가기 (break) & for문 조건으로 돌아가기 (continue)

for 문에도 while문처럼 break와 continue가 있습니다.

 

1. for문 빠져나가기(break)

package com.company;

public class Main {

    public static void main(String[] args) {

        int coffee = 9; // 커피 양
        int money = 10; // 돈

        System.out.println("for문 실행");
        for (int i = 0; i < money; i++) {

            if(money == 100){
                System.out.println("장사 끝!! :) ");
                break;
            }

            money += 10;
            coffee--;
            System.out.println("돈을 받았으니 커피를 판매합니다. 현재 자금: "+money);
            System.out.println("남은 커피의 양은 " + coffee + "입니다.");
            System.out.println("힘들다... 힘내자!!");
        }
        System.out.println("for문 끝!");
    }
}

 

위 예시를 보면 for문이 실행되면서 money 변수 값이 100이라면 break 코드를 통해 for 문을 빠져나갑니다.

 

콘솔 결과화면

2. for문 조건으로 돌아가기 (continue)

package com.company;

public class Main {

    public static void main(String[] args) {

        int coffee = 9; // 커피 양
        int money = 10; // 돈

        System.out.println("for문 실행");
        for (int i = 0; i < money; i++) {

            if(money == 100){
                System.out.println("장사 끝!! :) ");
                break;
            }

            money += 10;
            coffee--;
            System.out.println("돈을 받았으니 커피를 판매합니다. 현재 자금: "+money);
            System.out.println("남은 커피의 양은 " + coffee + "입니다.");

            if(money == 100){

                System.out.println("돈을 다 모았습니다.");
                continue;
            }

            System.out.println("힘들다... 힘내자!!");
        }
        System.out.println("for문 끝!");
    }
}

 

위 예시를 보면 for문이 실행되고 money 값이 100이면 밑에 print 코드가 실행되지 않고 for 문으로 갑니다.

그리고 마지막으로 break; 코드를 만나 for문이 종료됩니다.

 

결과 콘솔화면

 

- for each 기본 문법

for each는 while for문과 다르게 사용됩니다. 설명을 길게 하는 것보다는 직접 예시를 통해 보여드리겠습니다.

 

1. for each문

package com.company;

import java.util.ArrayList;

public class Main {

    public static void main(String[] args) {

        ArrayList<String> userList = new ArrayList<String>();
        userList.add("유저1");
        userList.add("유저2");
        userList.add("유저3");
        userList.add("유저4");
        userList.add("유저5");

        for(String user: userList) {
            System.out.println(user);
        }
    }
}

 

2. for문

 

package com.company;

import java.util.ArrayList;

public class Main {

    public static void main(String[] args) {

        ArrayList<String> userList = new ArrayList<String>();
        userList.add("유저1");
        userList.add("유저2");
        userList.add("유저3");
        userList.add("유저4");
        userList.add("유저5");

        for (int i = 0; i < userList.size(); i++){
            String user = userList.get(i);
            System.out.println(user);
        }
    }
}

결과

두 코드는 결과가 동일하다. 하지만 ArrayList라는 자료형에서 데이터를 접근해서 값을 가져오는 방식이 다르다.

 

for each 구조는 다음과 같습니다.

for(type data: iterate) {
    
}

여기서 반복되는 iterate는 객체입니다. 객체에 대한 개념은 제가 Class 글에서 설명해드리겠습니다.

 

for each는 객체에 크기만큼 반복 횟수를 정합니다.

 

임의로 반복 횟수를 정할 수 없습니다. 참고세요. :)