"continue"키워드 란 무엇이며 어떻게 Java에서 작동합니까?


나는이 키워드를 처음으로 보았고 누군가가 내게 그것이 무엇을 설명 할 수 있는지 궁금해하고있었습니다.

  • continue 키워드 란 무엇입니까?
  • 어떻게 작동합니까?
  • 언제 사용됩니까?


Answers



레이블이없는 continue 문은 가장 안쪽의 while 또는 do 루프 조건과 가장 안쪽의 for 루프의 update 표현식에서 다시 실행됩니다. 이것은 종종 루프의 처리를 조기에 끝내고 깊게 중첩 된 if 문을 피하는 데 사용됩니다. 다음 예제에서 continue 는 루프에서 다음 명령문을 처리하지 않고 다음 행을 가져옵니다.

while (getNext(line)) {
  if (line.isEmpty() || line.isComment())
    continue;
  // More code here
}

레이블을 사용하면 continue 가 가장 안쪽 루프가 아닌 해당 레이블로 루프에서 다시 실행됩니다. 이것은 깊게 중첩 된 루프를 벗어나거나 간단히하기 위해 사용할 수 있습니다.

때로는 continue 가 빈 루프 몸체를 더 명확하게하기 위해 자리 표시 자로 사용되기도합니다.

for (count = 0; foo.moreData(); count++)
  continue;

레이블이없는 동일한 명령문은 C 및 C ++에도 있습니다. Perl에서 이와 동등한 것이 next 입니다.

이러한 유형의 제어 흐름은 권장되지 않지만 continue 선택하면 continue 사용하여 제한된 형태의 goto 를 시뮬레이션 할 수 있습니다. 다음 예제에서 continuefor (;;) 루프에 for (;;)for (;;) 다시 실행합니다.

aLoopName: for (;;) {
  // ...
  while (someCondition)
  // ...
    if (otherCondition)
      continue aLoopName;



continue goto 와 비슷합니다. 네가 break 익숙해? 대조적으로 생각하는 것이 더 쉽습니다.

  • break 는 루프를 종료합니다 (그 아래의 코드로 점프).

  • continue 는 현재 반복에서 루프 내에서 코드의 나머지 처리를 종료하지만 루프를 계속합니다.




예제를 보자.

int sum = 0;
for(int i = 1; i <= 100 ; i++){
    if(i % 2 == 0)
         continue;
    sum += i;
}

이렇게하면 1에서 100까지의 홀수 만 합산됩니다.




루프의 본문을 서브 루틴으로 생각하면 continue 는 일종의 return 과 같습니다. 동일한 키워드가 C에 존재하며 동일한 목적을 수행합니다. 다음은 인위적인 예제입니다.

for(int i=0; i < 10; ++i) {
  if (i % 2 == 0) {
    continue;
  }
  System.out.println(i);
}

이것은 홀수 만 출력 할 것입니다.




일반적으로 while 또는 for 루프) 선언이 즉시 나타나지 않는 경우 코드에서 일부 리팩터링을 사용할 있다는 경고로 continue (및 break )를 참조합니다. 메서드의 중간에서 return 하는 경우에도 마찬가지이지만 약간 다른 이유가 있습니다.

다른 사람들이 이미 말했듯이, continue 루프의 다음 반복으로 이동하고, break 는 둘러싸는 루프 밖으로 이동합니다.

continue / break 와 컨텍스트 이외의 다른 루프가 계속되는 루프가 없으므로 유지 관리 timebomb 일 수 있습니다. 내부 루프를 추가하거나 루프의 "guts"를 별도의 메소드로 이동하면 continue / break 실패의 숨겨진 효과가 있습니다.

IMHO, 그것들을 최후의 수단으로 사용하는 것이 가장 좋습니다. 그리고 루프의 시작 또는 끝에서 그룹의 사용이 단단히 묶여 있는지 확인하여 다음 개발자가 한 화면에서 루프의 "경계"를 볼 수있게하십시오. .

continue , breakreturn (방법의 끝에서 하나의 진정한 반환) 이외의 모든 범주는 "숨겨진 GOTO"로 분류됩니다. 예기치 않은 장소에 루프 및 기능 제어를 배치하면 결국 버그가 발생합니다.




이미 언급했듯이 continue 는 루프의 끝까지 코드 처리를 건너 뜁니다. 그런 다음이 조건이 계속되면 루프의 조건 으로 이동하고 다음 반복을 실행합니다 (또는 표시된 루프의 조건에 플래그가있는 경우).

do - while 의 경우에는 루프의 시작 부분이 아닌 continue 후 하단의 조건으로 이동하는 do - while 강조 표시해야합니다.

이 때문에 많은 사람들이 다음 코드가 생성하는 것에 정확하게 응답하지 못합니다.

    Random r = new Random();
    Set<Integer> aSet= new HashSet<Integer>();
    int anInt;
    do {
        anInt = r.nextInt(10);
        if (anInt % 2 == 0)
            continue;
        System.out.println(anInt);
    } while (aSet.add(anInt));
    System.out.println(aSet);

* 대답이 aSet 홀수가 100 % 만 포함된다면 ... 틀렸어!




If Else 조건을 고려하십시오. continue 문은 조건에있는 내용을 실행하고 조건을 벗어나 즉 다음 반복 또는 조건으로 이동합니다. 그러나 브레이크가 루프를 빠져 나간다. 다음 프로그램을 고려하십시오. '

public class ContinueBreak {
    public static void main(String[] args) {
        String[] table={"aa","bb","cc","dd"};
        for(String ss:table){
            if("bb".equals(ss)){
                continue;
            }
            System.out.println(ss);
            if("cc".equals(ss)){
                break;
            }
        }
        System.out.println("Out of the loop.");
    }

}

aa cc 루프를 벗어났습니다.

continue (after if.) 대신 break를 사용하면 aa를 인쇄하고 루프에서 빠져 나옵니다 .

조건 "bb"가 ss와 같은 경우 : Continue : 다음 반복, 즉 "cc".equals (ss)로 이동합니다. For Break : 그것은 루프에서 나오고 "Out of the loop"를 인쇄합니다.




"Java"에서 "continue"는 현재 루프의 끝으로 이동합니다. 즉, 컴파일러가 루프에서 계속 볼 경우 다음 반복으로 이동합니다.

예 : 1에서 10까지의 홀수를 인쇄하는 코드입니다.

컴파일러는 다음 반복으로 이동을 계속할 때마다 인쇄 코드를 무시합니다.

for (int i = 0; i < 10; i++) { 
    if (i%2 == 0) continue;    
    System.out.println(i+"");
}



파티 좀 늦었지만 ...

continue 는 루프를 제어하는 ​​조건식에서 모든 작업이 완료되는 빈 루프에 유용하다는 점을 언급 할 필요가 있습니다. 예 :

while ((buffer[i++] = readChar()) >= 0)
    continue;

이 경우 문자를 읽고 buffer 추가하는 작업은 while 루프를 제어하는 ​​표현식에서 수행됩니다. continue 문은 루프에 본문이 필요하지 않다는 시각적 표시기 역할을합니다.

그것은 동급보다 조금 더 분명합니다.

while (...)
{ }

그리고 확실히 더 나은 (그리고 더 안전한) 코딩 스타일은 다음과 같은 빈 문장을 사용하는 것보다 낫다.

while (...)
    ;



기본적으로 java에서는 continue가 선언문입니다. 따라서 continue 문은 일반적으로 루프와 함께 사용되어 현재 반복을 건너 뜁니다.

자바에서 사용되는 방법과시기에 대해서는 아래 링크를 참조하십시오. 예를 들어 설명이 있습니다.

http://www.flowerbrackets.com/continue-java-example/

희망이 도움이 !!