Java의 For 문에서, 반복조건 연산을 언제 하게 되는 것인지 궁금합니다.

cho8992 Reply 7 years 37 weeks ago
안녕하세요! 자바에 처음 입문한 초보자입니다 :) 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 문은, 어느 시점에서 반복조건 연산을 수행하는 것인지 궁금합니다!
onacloud Reply 7 years 37 weeks ago
for문의 문법은 다음과 같습니다 for (초기식; 조건식; 반복식) { 반복할 명령어들 } 반복할 명령어 사이에 나타난 continue가 실행되면 continue 아래의 명령어는 실행하지 않고 위로 올라가 반복식->조건식을 거쳐서 루프를 실행하거나 빠져나오게 됩니다. continue의 의미는 이 반복은 더 이상하지 진행하지 않고 다음 반복을 수행해 보자 입니다.
pichulia Reply 7 years 36 weeks ago
for(int i = 0; i<10 ; i++) 에서 i++ 말고 다른것들도 넣어가면서 실험해보시요. i-- 라던지 i+=2 라던지 i=-193 라던지 심지어 System.out.println(i) 라던지!