JavaRush /Java Blog /Random-KO /Java의 Break 문
iloveski
레벨 37
Москва

Java의 Break 문

Random-KO 그룹에 게시되었습니다
모든 동료들과 단순히 관심이 있는 사람들에게 안녕하세요.
Java의 Break 문 - 1
오늘 우리는 break 연산자와 같은 Java 프로그래밍 언어의 기능을 살펴 보겠습니다. 이것은 전환 연산자 주제에 대한 첫 번째 기사이므로 마음에 드시면 더 작성해 드리겠습니다. 이 기사는 주로 초보 개발자를 대상으로 작성되었으며, 고급 학생들은 여기에서 스스로 새로운 것을 찾지 못할 수도 있다는 점을 즉시 지적하고 싶습니다. 자, 가자. Java에는 프로그램 명령이 실행되는 순서를 변경하는 두 가지 방법이 있습니다: 점프 문과 예외 처리 메커니즘. 자바에는 세 가지 점프 연산자(break, continue, return)가 있습니다. 오늘은 운영자를 자세히 살펴 보시기 바랍니다 break. 예외 처리는 이 기사의 범위를 벗어나는 광범위한 주제입니다. java에서는 break문을 사용하는 방법이 3가지가 있습니다. 첫 번째이자 가장 널리 사용되는 방법은 이를 사용하여 break루프를 조기에 종료하는 것입니다. 예를 들면 다음과 같습니다.
public class SimpleExample {
    public static void main(String[] args) {
        findNumberInLoop(3);
    }
    public static void findNumberInLoop(int number){
        for (int i = 0; i < 10; i++) {
            if (i == number) {
                break;
            }
            System.out.println(i);
        }
        System.out.println("cycle was finished");
    }
}
이 예는 다음을 표시합니다:
1
2
cycle was finished
이는 루프 카운터가 전달된 매개변수 즉 숫자 3과 i동일해지면 루프 실행이 조기 종료된다는 의미입니다. number프로그램에 여러 개의 중첩 루프가 있는 경우 가장 안쪽 루프에서만 출력을 중단합니다. 예:
public class SimpleExample {
    public static void main(String[] args) {
        findNumberInLoop(3);
    }
    public static void findNumberInLoop(int number){
        for(int i = 0; i < 5; i++) {
            for (int j =0; j < 10; j++) {
                if(j == number) {
                    break;
                }
                System.out.print(j);
            }
            System.out.println();
        }
        System.out.println("cycles was finished");
    }
}
이 예에서는 다음과 같은 출력을 생성합니다.
012
012
012
012
012
cycles was finished
예제에서 볼 수 있듯이 내부 루프는 3번(파라미터 number)에서 매번 중단되고, 외부 루프는 의도한 대로 5번 실행됩니다. Java에서는 루프 내에서 둘 이상의 break 문을 사용할 수 있지만 코드의 가독성과 구조가 크게 저하되므로 권장되지 않습니다. 두 번째 용도는 breakBranch의 명령문 실행을 중단하는 데 사용하는 것입니다 switch. 예를 들면 다음과 같습니다.
public class SimpleExample {
    public static void main(String[] args) {
        square(2);
    }

    public static void square(int number){
        switch (number){
            case 1:
                System.out.println(number*number);
                break;
            case 2:
                System.out.println(number*number);
                break;
            case 3:
                System.out.println(number*number);
                break;
        }
        System.out.println("after switch");
    }
}
이 예제를 실행하면 다음과 같은 출력이 생성됩니다.
4
after switch
break 문은 전체 블록 다음에 오는 코드에 제어를 전달했습니다 switch. 이 예에서 breakin을 지정하지 않은 경우 :switch
public class SimpleExample {
    public static void main(String[] args) {
        square(2);
    }
    public static void square(int number){
        switch (number){
            case 1:
                System.out.println(number*number);
            case 2:
                System.out.println(number*number);
            case 3:
                System.out.println(number*number);
        }
        System.out.println("after switch");
    }
}
출력은 예상과 다릅니다.
4
4
after switch
이는 블록이 실행된 후 case 2프로그램이 모든 후속 케이스 블록을 계속 실행하여 해당 출력을 제공했기 때문에 발생했습니다. 때로는 운영자의 이 기능이 switch 우리에게 도움이 될 수 있습니다. 예를 들면 다음과 같습니다.
public class SimpleExample {
    public static void main(String[] args) {
        compare(2);
        compare(7);
        compare(12);
    }
    public static void compare(int number){
        switch (number){
            case 0:
            case 1:
            case 2:
            case 3:
            case 4:
            case 5:
                System.out.println("number is less than 5 or equal 5");
                break;
            case 6:
            case 7:
            case 8:
            case 9:
                System.out.println("number is greater than 5");
                break;
            default:
                System.out.println("number is less than 0 or greater than 9");
        }
        System.out.println("after switch");
    }
}
이 프로그램은 주어진 숫자를 숫자 5와 비교하고 다음과 같은 출력을 제공합니다.
after switch
number is greater than 5
after switch
number is less than 0 or greater than 9
after switch
메서드가 처음 호출되면 연산자는 switch제어권을 연산자에게 전달한 case 2다음 break의 연산자에게 전달합니다 case 5. 두 번째 호출은 첫 번째 호출과 유사하지만 c 로 시작합니다 case 7. 세 번째 호출에서는 모든 경우에 적합한 값을 찾지 못하여 연산자가 실행됩니다 default. 세 번째 방법은 C 연산자 break대신 연산자를 사용하는 것인데, 이를 위해 레이블을 사용 하여 호출되는 goto특수한 형태의 연산자를 사용합니다 . 이 양식은 레이블처럼 보입니다. 이는 일반적으로 코드 블록 앞에 오는 Java 네임스페이스의 적절한 이름입니다. 또한 이 코드 블록을 레이블과 함께 적용한 후에는 해당 레이블이 있는 블록 다음 위치부터 코드가 계속 실행됩니다. 예를 들면 다음과 같습니다. breakbreakbreak метка;break
public class SimpleExample {
    public static void main(String[] args) {
        howWeUseLabels(true);
        System.out.println();
        howWeUseLabels(false);
    }
    public static void howWeUseLabels(boolean bool) {
        firstBlock:{
            secondBlock:{
                thirdBlock:{
                    System.out.println("We will see it always");
                    if(bool) {
                        break secondBlock;
                    }
                    System.out.println("We won't see it if bool == true");
                }
                System.out.println("We won't see it if bool == true");
            }
            System.out.println("We will see it always");
        }
    }
}
이 예에서는 다음과 같은 출력이 생성됩니다.
We will see it always
We will see it always

We will see it always
We won't see it if bool == true
We won't see it if bool == true
We will see it always
첫 번째 메서드 호출 후 연산자는 break블록 끝으로 제어를 전달하여 및 를 secondBlock종료하고 끝에서 다른 연산자를 실행합니다 . 두 번째 통화 후에는 모든 회선이 화면에 표시됩니다. 레이블을 사용하여 주기를 나타낼 수도 있습니다. 레이블이 가리키는 코드 블록 내부에서만 레이블로 이동할 수 있다는 점을 기억해야 합니다. 예를 들어 이러한 코드는 컴파일되지 않습니다. secondBlockthirdBlockprintln()firstBlock
public class SimpleExample {
    public static void main(String[] args) {
        label:{
            System.out.println("inside label");
        }
        if(true) {
            break label;
        }
        System.out.println("This is error");
    }
}
코드 및 명령문의 청결성에 대한 참고 사항 break: 명령문을 매우 신중하게 사용하라는 조언이 일반적으로 받아들여지고 있습니다 break. 이를 사용하면 break루프를 이해하기가 더 어려워지고 프로그래머가 루프 내부를 살펴보며 해당 작업의 미묘한 차이를 이해해야 하기 때문입니다. 더 짧은 루프에서는 더 자신있게 사용할 수 있고 길고 깊게 중첩된 루프에서는 더 주의해서 사용할 수 있는 경험적 규칙이 있습니다 break . 이는 오류 가능성을 높이고 다른 프로그래머가 코드를 읽고 이해하는 것을 복잡하게 만들기 때문입니다. 위에서 쓴 것처럼, break코드 ​​전반에 걸쳐 많은 수의 .를 사용한다는 것은 프로그래머가 자신이 왜 그렇게 코드를 작성했는지 완전히 이해하지 못한다는 것을 의미합니다. 이러한 루프를 여러 개의 작은 루프로 나누어 리팩토링하는 것을 고려해 볼 가치가 있습니다. break 를 대신하여 레이블을 사용할 때는 goto코드 구조가 복잡해지므로 주의하십시오 . 이것이 제가 오늘 Java의 연산자에 대해 말씀드리고 싶은 전부입니다 break. 나는 건설적인 비판에 기꺼이 응할 것이며, 관심이 있으시면 연산자 continue및 에 대한 연속 글을 쓸 준비도 되어 있습니다.return
코멘트
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION