Java 루프에서 레이블의 역할 깊이 분석

3149 단어 java순환태그
continue와break는 순환의 실행 절차를 바꿀 수 있지만, 다중 순환에서 이 두 문장은 내부 순환에서 외부 순환으로 직접 전환할 수 없습니다.C 언어에서 goto 문장을 통해 다중 순환의 전환을 실현할 수 있지만 비순환 구조에서 goto 문장을 사용하면 프로그램의 구조를 문란하게 하고 가독성을 떨어뜨릴 수 있다.따라서 자바는 라벨이 있는continue와break 문장을 발명했는데 실제로는 제한이 있는 순환에 전문적으로 사용되는 goto 문장이다.
통상적으로 우리가 사용하는continue (또는break) 문장은 라벨이 없습니다. 이것은 기본적으로 현재 순환에서continue (또는break) 문장을 실행하는 것입니다.라벨이 있는 순환은 실제로 이 순환에 이름을 지어줍니다. "continue (또는break) + 라벨"문장을 사용할 때 실제로는 라벨이 있는 순환에서continue (또는break) 문장을 실행합니다.
지금 우리는 세 가지 예로 라벨이 달린 순환을 설명한다.
1. 레이블이 없는 이중 순환

package javaleanning;
public class LableTest {
public static void main(String[] args) {
for(int i = 0; i < 10; i++){
for(int j = 0; j < 10; j++){
System.out.print("("+i+","+j+") ");
}
System.out.println();
}
}
}
실행 결과
(0,0) (0,1) (0,2) (0,3) (0,4) (0,5) (0,6) (0,7) (0,8) (0,9)
(1,0) (1,1) (1,2) (1,3) (1,4) (1,5) (1,6) (1,7) (1,8) (1,9)
(2,0) (2,1) (2,2) (2,3) (2,4) (2,5) (2,6) (2,7) (2,8) (2,9)
(3,0) (3,1) (3,2) (3,3) (3,4) (3,5) (3,6) (3,7) (3,8) (3,9)
(4,0) (4,1) (4,2) (4,3) (4,4) (4,5) (4,6) (4,7) (4,8) (4,9)
(5,0) (5,1) (5,2) (5,3) (5,4) (5,5) (5,6) (5,7) (5,8) (5,9)
(6,0) (6,1) (6,2) (6,3) (6,4) (6,5) (6,6) (6,7) (6,8) (6,9)
(7,0) (7,1) (7,2) (7,3) (7,4) (7,5) (7,6) (7,7) (7,8) (7,9)
(8,0) (8,1) (8,2) (8,3) (8,4) (8,5) (8,6) (8,7) (8,8) (8,9)
(9,0) (9,1) (9,2) (9,3) (9,4) (9,5) (9,6) (9,7) (9,8) (9,9)
2. 라벨이 있는 이중 순환, "break+라벨"문장
이 예에서 이중 for 순환이다. 우리는 바깥쪽에 시작에 따라 라벨을 붙였다(즉 바깥쪽 순환에 이름을 붙였다)'outerCycle'은 안쪽 순환에서'break outerCycle'을 사용할 때 outerCycle이라는 순환에서 직접break 문장을 사용하는 것과 같다.

package javaleanning; 
public class LableTest {
public static void main(String[] args) {
outerCycle:
for(int i = 0; i < 10; i++){
for(int j = 0; j < 10; j++){
if(j == 5){
break outerCycle;
}
System.out.print("("+i+","+j+") ");
}
System.out.println();
}
}
}
실행 결과
(0,0) (0,1) (0,2) (0,3) (0,4)
3. 라벨이 있는 이중 순환, "continue+라벨"문장
이 예에서 이중 for 순환이다. 우리는 바깥쪽에 시작에 따라 라벨을 붙인다. (즉 바깥쪽 순환에 이름을 붙인다)'outerCycle'은 안쪽 순환에서'continue outerCycle'을 사용할 때 outerCycle이라는 순환에서continue 문장을 직접 사용하는 것과 같다.

package javaleanning;
public class LableTest {
public static void main(String[] args) {
outerCycle:
for(int i = 0; i < 10; i++){
for(int j = 0; j < 10; j++){
if(j == 5){
continue outerCycle;
}
System.out.print("("+i+","+j+") ");
}
System.out.println();
}
}
}
실행 결과
(0,0) (0,1) (0,2) (0,3) (0,4) (1,0) (1,1) (1,2) (1,3) (1,4) (2,0) (2,1) (2,2) (2,3) (2,4) (3,0) (3,1) (3,2) (3,3) (3,4) (4,0) (4,1) (4,2) (4,3) (4,4) (5,0) (5,1) (5,2) (5,3) (5,4) (6,0) (6,1) (6,2) (6,3) (6,4) (7,0) (7,1) (7,2) (7,3) (7,4) (8,0) (8,1) (8,2) (8,3) (8,4) (9,0) (9,1) (9,2) (9,3) (9,4)
주의: 실제 운행 결과는 모두 한 줄에 표시됩니다. (즉 줄 바꾸기 문장을 실행하지 않았습니다.) 현재 이러한 표시 결과는 단지 조판의 원인일 뿐입니다.

좋은 웹페이지 즐겨찾기