JAVA

[JAVA] 기타제어문과 label

(งᐛ)ว 2023. 8. 18. 01:45
728x90
728x90

label : 특정 반복문에 이름표를 붙여 두개 이상의 반복을 제어할 수 있는 키워드 

 

**label의 특징 

항상 쌍으로 존재

원하는대로 이름 설정가능 

자신을 포함하는 상위개념에게만 적용가능

 

1️⃣for문에서 label 사용하기

k라는 inner와 j라는 inner가 병렬로 2중 for문에 포함되어있고

 

 

j inner는 2의 배수가 나오는 순간 break로 빠져나오게 하고

 

 

j inner의 상위개념인 i에 label을 붙이면 다음과 같은 결과가 나온다. (k inner는 상위개념이 아님)

j inner에서 break와 label을 만나 짝꿍 label을 찾아 그대로 반복문을 빠져나온다.

 

 

 

 

2️⃣ switch문에서 label 사용하기

n=0은 10보다 작으므로 if의 break를 만나지 않고 그대로 수행한다. 

n++을 만나 숫자가 하나씩 커지는데

3의 배수인 경우  if을 만족하므로 "continue를 만남"을 출력하고 continue를 만나 while의 조건식으로 돌아가 반복한다.

3의 배수가 아닌 경우 if를 빠져나와 숫자 그대로를 출력한다. 마찬가지로 while조건식으로 돌아가 반복한다. 

 

👉무한루프오류발생!

1

2

continue를 만남

4

5

continue를 만남

7

...

 

 

 

label을 이용하면?

위의 과정을반복하다가 n이 9가 되면 if을 만족하여 "continue를 만남"을 출력하고 continue와 label을 만난다.

이때 짝꿍 label을 찾아 if를 검증할 기회를 얻게되는데 9>=10은 거짓이므로 break를 만나지 못하고 

while로 내려와 다시한번 반복문을 수행한다. 

 

 

n이 10,11일 때는 if를 만족하지 못해 label을 만날 수 없다. 때문에 if를 검증할 기회도 없다.

10,11은 System.out.println(n); 만 수행하고 while의 조건식으로 돌아간다.

 

 

 n이 12가 되면 if를 만족해 "continue를 만남"을 출력하고 continue와 label을 만난다.
이때 짝꿍 label을 찾아 if를 검증할 기회를 다시 얻게되는데 12>=10은 참이므로 break를 만나 반복문을 빠져나올 수 있다.

728x90