[Java] 라벨을 활용해서 블록을 탈출해보자

heiler·2025년 3월 8일

Java

목록 보기
2/4

제네릭 공부하다가 java.util.ArrayList를 뜯어보던 중 아래와 같은 코드를 발견했다.

public boolean remove(Object o) {
    final Object[] es = elementData;
    final int size = this.size;
    int i = 0;
    found: {
        if (o == null) {
            for (; i < size; i++)
                if (es[i] == null)
                    break found;
        } else {
            for (; i < size; i++)
                if (o.equals(es[i]))
                    break found;
        }
        return false;
    }
    fastRemove(es, i);
    return true;
}

found?

found 가 바로 라벨이다.

라벨(Label)이 뭔데?

  • 라벨 자체는 변수나 타입이 아니라, 중괄호({})로 감싸진 코드 블록에 이름을 붙이는 역할을 한다.

  • Java에서 블록 단위로 실행 흐름을 빠르게 이동할 수 있도록 하는 기능이다.

  • break 라벨명;을 통해 라벨 밖으로 바로 빠져나갈 수 있고, continue 라벨명; 을 통해 라벨의 시작 위치부터 다시 실행할 수 있다.

  • C언어의 goto 문법과 비슷하지만 Java의 라벨은 본인이 속한 라벨에 한해서 시작과 끝 위치로 이동할 수 있고, 다른 라벨로의 이동은 할 수 없다.

👨🏻‍💻 예제 코드

public void loopEscapeTest(int[][] array) {
    final int INF = 1_000_000_000;
    nestedForLoop:
    {
        for (int i = 0; i < array.length; i++) {
            for (int j = i + 1; j < array[i].length; j++) {
                if (array[i][j] == INF) {
                    break nestedForLoop;  // nestedForLoop의 밖으로 이동
                }
            }
        }
    }
    ...
}

라벨은 중첩 루프를 탈출할 때 매우 유용하다.

profile
Smiley

0개의 댓글