Language/Java

[Java] 반복문

by Donghwan 2021. 11. 6.

반복문은 어떤 작업이 반복적으로 수행되도록 할 때 사용됩니다. 반목문의 종류로는 크게 for문과 while문이 있고 이것에서 파생된 foreach, do-while이 있습니다. 반복문은 주어진조건을 만족하는 동안 주어진 문장을 반복적으로 수행합니다.

 

for

for(초기화; 조건식; 증감식) {
    //실행구문
}

for문은 반복 횟수를 알고 있을 때 적합합니다. 구조가 조금 복잡하지만 직관적이라 오히려 이해하기 쉽습니다.

for(int i=0; i<10; i++) {
    //실행할 구문
}

위 코드가 가장 많이 사용되는 방식입니다. 해석하자면 i의 초기값이 0이고 i가 10보다 작으면 아래 구문을 실행하고 실행이 끝난 후 i의 값을 증가시켜서 다음 조건을 체크한다는 의미입니다.

i가 0인 초기에 구문을 실행하고 i의 값을 증가연산자로 증가시키고 i의 값이 1이 됩니다. 그래도 i가 10보다 작기 때문에 한번 더 구문을 실행하고 다시 증가연산자로 i를 증가시킵니다. 계속 반복하여 i가 9인 상황에서 조건을 만족하기 때문에 구문을 실행하고 i를 증가시키면 i가 10이 되기 때문에 조건을 만족하지 못하기 때문에 반복문을 탈출하게 됩니다. for문은 다양한 방식으로 사용할 수 있는데 가능한 경우를 보도록 하겠습니다.

//감소 연산자를 사용하는 경우
for(int i=10; i>=1; i--) {
    //실행할 구문
}

//다양한 증감식을 사용하는 경우
for(int i=0; i<10; i+=2) {
    //실행할 구문
}

for(int i=0; i<10; i*=2) {
    //실행할 구문
}

//모두 생략하는 경우
for(;;)

for(;;)의 경우 조건식이 생략된 경우이고 항상 true로 간주되어 무한 반복문이 됩니다. 대신 break를 이용하여 for문을 빠져나오도록 해줘야 합니다.

 

foreach

foreach문은 향상된 for문이라고도 불립니다. 배열과 컬렉션에 저장된 요소에 접근할 때 기존보다 편리한 방법으로 처리할 수 있도록합니다.

for(타입 변수 : 배열 또는 컬렉션) {
    //실행할 구문
}

위와 같은 형태를 가지고 위 문장에서 타입은 배열 또는 컬렉션 요소의 타입이어야 합니다. 배열 또는 컬렉션에 저장된 값이 매 반복마다 하나씩 순서대로 읽혀서 변수에 저장됩니다. 그리고 반복문 내에서는 이 변수를 사용해서 코드를 작성합니다. 아래 코드는 동일한 기능을 합니다.

//기존 for문
char[] chars = {'d', 'o', 'n', 'g', 'h', 'w', 'a', 'n'};
for(int i=0; i<chars.length; i++) {
    char ch = chars[i];
    //실행할 구문
}

//foreach
String str = "donghwan";
for (char ch : str.toCharArray()) {
    //실행할 구문
}

 

while

for문에 비해 while문은 구조가 간단합니다. if문과 비슷하게 조건식과 블럭 안의 구문으로 이루어져 있습니다. 하지만 참인 경우 반복된다는 차이가 있습니다. 

while(조건식) {
    //실행할 구문
}

while문은 먼저 조건식을 평가해서 조건식이 거짓이면 문장 전체를 벗어나고, 참이면 블럭 안의 구문을 실행하고 다시 조건식을 평가합니다. 조건식의 평가가 거짓이 될 때까지 이 과정을 계속 반복합니다. while은 for문과 다르게 조건식을 생략할 수 없습니다.

//for문
for(int i=0; i<10; i++) {
    //실행할 구문
}

//while문
int i=0;
while (i < 10) {
    //실행할 구문
    i++;
}

위 코드는 완전 동일한 코드입니다. for문과 while문은 항상 서로 변환이 가능합니다. 초기화나 증감식이 필요하지 않은 경우라면 while이 더 적합할 수 있고, 초기화나 증감식이 필요한 경우 초기화, 조건식, 증감식이 모여 있는 for문 더욱 직관적이고 적합할 수 있습니다.

 

do-while

do-while문은 while문의 변형으로 기존 구조는 while과 같으나 조건식과 블럭의 순서를 바꿔놓은 것 입니다. 그래서 while문과 반대로 블럭을 먼저 수행한 후 조건식을 평가합니다. while은 조건식에 따라 한번도 실행되지 않을 수 있지만, do-while문은 최소 한번은 실행되는 것을 보장합니다. 그리 많이 사용되지 않습니다.

do {
    //실행할 구문
} while(조건식)

 

break & continue

break는 앞서 switch문에서 나왔던 예약어로 반복문에서도 사용할 수 있습니다. 반복문이 break를 만나게 된다면 즉시 반복문을 벗어나도록 합니다. 특히 무한 반복문에서는 조건에 따라 break하는 로직을 반드시 적용해주어야 합니다. 또 반복문에 이름을 붙여 사용하는 경우에는 break 뒤에 반복문의 이름을 적용하여 특정 반복문을 벗어나도록 할 수 있습니다.

continue는 반복문 내에서만 사용할 수 있으며, 반복이 진행되는 도중에 continue를 만나면 반복문의 끝으로 이동하여 다음 반복으로 넘어갑니다. continue는 반복문을 벗어나는게 아니라 현재 진행중인 반복을 다음 반복으로 넘기는 역할을 합니다. 전체 반복에서 특정 조건에서 반복을 제외하고 싶을 때 사용합니다.

 


728x90
반응형

'Language > Java' 카테고리의 다른 글

[Java] Collection - (2) List란?  (0) 2021.11.12
[Java] Collection - (1) Collection Framework란?  (0) 2021.11.12
[Java] 조건문  (0) 2021.11.05
[Java] Arrays 클래스  (0) 2021.11.02
[Java] String과 String Pool  (0) 2021.11.01

댓글