안녕하세요! 자바에 처음 입문한 초보자입니다 :)
For 문의 반복조건 연산을 언제 하는지 궁금하여, 간단한 continue 코드로 실험을 해 보았는데,
while의 경우
class ForTest{
public static void main(String[] args){
int i = 1;
while (i<10)
{
System.out.println(i);
if (i<10)
continue;
i ++;
System.out.println(i);
}
}
}
이와 같이 코드를 짜면, continue 문 아래의 i++; 가 연산되지 않아 무한루프로 1을 출력합니다.
만일 코드를 다음과 같이 짠다면,
int i = 1;
while (i++<10)
{
System.out.println(i);
if (i<10)
continue;
System.out.println(i);
}
}
}
출력 결과가 다음과 같이 나옵니다.
2 3 4 5 6 7 8 9 10 10
이 경우에는 while문에 진입하면서 i++ 연산을 진행하고, continue 문에 의해 반복조건 검사를 할 때마다 i++ 연산이 진행되기 때문에 2부터 10까지 출력되고, 이후 if 문의 조건이 만족되지 않아서 10을 한 번 더 출력한 것을 확인할 수 있습니다.
다음은 for 문의 경우입니다.
for(int i = 0; i<10 ; i++)
{
System.out.println(i);
if (i<9)
{
System.out.println(i);
continue;
}
System.out.println("AAA");
}
}
}
이와 같이 코드를 짜면, 출력 결과가 다음과 같이 나옵니다.
0 0 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 AAA
첫 번째, for문을 진입하면서는 반복조건 연산이 실행되지 않았습니다. 0이 출력되는 것으로 확인할 수 있습니다.
두 번째, if 조건을 검사하는 부분에서도 반복조건 연산이 실행되지 않습니다. 0이 출력되는 것으로 확인할 수 있습니다.
두 경우 모두 반복연산이 실행된 적 없는데, continue 문으로 반복조건 확인을 강제할 경우, 갑자기 반복조건 연산이 실행됩니다.
그렇다고 for 문의 반복영역 끝에 도달한 것도 아닙니다. System.out.println("AAA")는 출력되지 않기 때문입니다.
그렇다면 for 문은, 어느 시점에서 반복조건 연산을 수행하는 것인지 궁금합니다!