자바를 공부하면서 그냥 넘어간 부분인데 기억 해놓으면 나름 유용하게 사용할 수 있을 것 같아서

    미리 포스팅 해놓려고 합니다.

     

    자바에서 반복문을 빠져나가는 방법은 break와 continue 문이 있고 개발자가 원하는 반복 작업을 메소드로 만들어서 return을 통해 빠져나오는 경우가 있습니다. 여기서 break 와 continue는 인접한 반복문을 종료 시키기 때문에 다중 반복문에서 한번에 빠져 나오거나 또는 2개 이상의 내가 원하는 범위의 반복문을 일괄 종료 할 수 없습니다.

     

    return은 메소드 자체를 종료시키는 것이기 때문에 반복문 종료 이후의 코드를 진행해야 한다면 곤란 할 수 있을거라 생각합니다. 따라서 break label이나 continue label이  이런 상황에서 상당히 유용하게 사용될 수 있다고 생각하는데요. 가볍게 코드를 보면서 생각해 보겠습니다.

     

    break label을 사용하지 않고 코드를 종료

    단순하게 while(true) 반복문안에 for문을 넣고 값이 5가 되면 멈추는 조건을 걸도록 하겠습니다.

    public class LabelTest {
    	public static void main(String[] args) {
    		while(true) {
    			for(int i=0; i<10; i++) {
    				if(i == 5) {
                    	System.out.println();
    					break;
    				}
    				System.out.println(i);
    			}
    		}
    	}
    }

    결과는 for문 만 종료되고 while문은 계속 작동되어 0~4까지 값이 계속 찍히게 됩니다.

     

    결과

    break label을 사용하여 코드를 종료

    이번에는 label break를 사용하여 코드를 종료해보겠습니다.

    끝내고 싶은 지점의 반복문위에 원하는 label명과 콜론( : )을 같이 기입하고 끝내고 싶은 지점에 break 구문과 label명을 넣고 세미콜론( ; ) 을 기입해주면 됩니다.

    public class LabelTest {
    	public static void main(String[] args) {
        		A: // 저는 라벨명을 A 로 지정하겠습니다.
    		while(true) {
    			for(int i=0; i<10; i++) {
    				if(i == 5) {
                    	System.out.println();
    					break A;
    				}
    				System.out.println(i);
    			}
    		}
    	}
    }

    결과

    for 문이 아닌 label명을 기입해준 for 문 자체가 종료되는 것을 알 수 있습니다.

    반복문이 여러개 사용되는 효율은 좋지 않겠지만 사용해야하는 경우도 있지 않을까요? 또는 원하는 반복문을 지정해서 종료해주고 싶은 때 해당 기능을 활용하면 좋은 코드를 작성할 수 있지 않을까 생각합니다.

     

    오늘도 좋은하루 되세요.

    Posted by Zomder