루프(중단 및 반환, 계속, 레이블) - 1

"안녕, 아미고!"

"오늘은 루프로 작업할 때 편리한 몇 가지에 대해 말씀드리겠습니다."

"첫 번째는 break 키워드 입니다. 루프 본문에서 이 명령을 사용하면 명령이 실행될 때 루프가 즉시 종료됩니다. 예를 들면 다음과 같습니다."

산출:
for (int i = 0; i < 10; i++)
{
System.out.println(i);
if (i > 5)
break;
}
0
1
2
3
4
5

"브레이크는 루프에서만 사용할 수 있습니까?"

"예. break 문은 루프에서만 사용할 수 있습니다. break 문이 실행되면 루프가 즉시 종료됩니다."

"알았다."

"좋습니다. 이제 두 번째로 공유하고 싶은 것은 키워드 continue입니다. 또한 루프에서만 사용할 수 있습니다. 이 명령이 실행되면 루프의 새로운 반복이 즉시 시작됩니다. 즉, 루프의 본문은 단순히 건너뜁니다."

"다음은 예입니다."

산출:
for (int i = 0; i < 10; i++)
{
if (i % 2 == 0)
continue;
System.out.println(i);
}
1
3
5
7
9

"그래서 프로그램이 루프에서 계속 명령에 도달하면 루프에서 코드 실행을 중지합니까?"

"아니요. 같은 코드를 여러 번 실행하면 루프가 생깁니다. 위의 예에서는 0에서 9까지 루프가 있습니다. 즉, 루프 본문이 10번 실행됩니다. 맞죠?"

"예."

"루프 본문을 한 번 통과하는 것을 반복이라고 합니다. 우리 루프는 10번의 반복으로 구성되어 있습니다. 루프 본문은 10번 실행됩니다."

"예, 그건 분명합니다."

" 계속 명령은 현재 반복을 조기에 종료합니다. 즉, 루프 내부에 남아 있는 코드를 건너뛰고 새 반복을 시작합니다."

"여기 또 다른 예가 있습니다."

ArrayList list = new ArrayList();
for (Object o: list)
{
if (o == null) continue;
System.out.println(o.toString());
}

"이 예에서는 목록에 있는 모든 개체의 문자열 표현을 표시합니다. 그러나 null인 개체는 건너뜁니다."

"알았어. 이게 얼마나 편리한지 알겠어."

"네. 레이블에 대해서도 말씀드리고 싶습니다. 레이블은 종종 프로그램 논리의 아름다움을 위반하기 때문에 Java에서는 거의 사용되지 않습니다. 하지만 어느 시점에서 코드에서 레이블을 만날 수 있습니다. 운동장에서 들은 것보다."

"옛날에는 코드의 모든 줄에서 다른 줄로 건너뛰는 것이 허용되었습니다. 레이블과 goto 문을 사용하여 이 작업을 수행했습니다. 다음과 같이 표시됩니다."

레이블이 있는 끔찍한 코드
System.out.println("Make cookies,");
label: System.out.println("not");
System.out.println("war");
goto label;

"이 예에서 goto label 명령이 실행된 후 프로그램은 label 이라고 표시된 줄로 이동합니다 .

"나중에 모든 사람이 현명하게 고토 문을 사용하지 않기로 결정했습니다 . 자바는 고토를 지원하지 않지만 고토는 예약어입니다. 별거 아닙니다…"

"그래서 Java에는 goto와 레이블이 없나요?"

"goto 문은 없지만 레이블이 있습니다!"

"어떻게 그렇게 될수 있니?"

"Java에서 레이블은 계속 및 중단 명령과 함께 사용할 수 있습니다. 중첩된 루프가 많을 때 사용됩니다."

"예를 들어, 5개의 중첩된 루프가 있고 일부 조건이 충족되면 그 중 3개에서 벗어나고 싶지만 전부는 아니길 원한다고 가정해 보겠습니다. 레이블은 이를 수행하는 우아한 방법입니다."

label1: for (int i = 0; i < 10; i++)
 label2: for (int j = 0; j < 10; j++)
  label3: for (int k =0; k < 10; k++)
   if (i == j && j == k)
    break label2;

"이 예에서 break 문이 실행될 때 변수 k가 있는 루프가 아니라 label2라는 레이블이 지정된 루프에서 종료합니다. 즉, k와 j가 있는 두 개의 루프를 즉시 종료합니다."

"얼마나 자주 사용합니까?"

"솔직히 자주는 아니지만 절대 알 수 없습니다. 언젠가는 보게 될 것입니다. 이것이 구문 기본입니다. 이 모든 것을 알아야 합니다!"

"알겠습니다. 감사합니다, Bilaabo."