原文: https://www.programiz.com/java-programming/break-statement

在本教程中,您将借助示例来学习break语句,该语句在 Java 中被标记为break语句。

在使用循环时,有时希望跳过循环内的某些语句或立即终止循环而不检查测试表达式。

在这种情况下,将使用breakcontinue语句。 您将在下一章中了解 d


Java 中的break语句立即终止循环,程序的控制移至循环后的下一条语句。

它几乎总是与决策语句一起使用( Java if...else语句)。

这是 Java 中break语句的语法:

  1. break;

break语句如何工作?

Java `Break`语句 - 图1

Java break语句的原理


示例 1:Java break语句

class Test {
    public static void main(String[] args) {

        // for loop
        for (int i = 1; i <= 10; ++i) {

            // if the value of i is 5 the loop terminates  
            if (i == 5) {
                break;
            }      
            System.out.println(i);
        }   
    }
}

输出

1
2
3
4

在上面的程序中,我们使用for循环在每次迭代中打印i的值。 要了解for循环的工作方式,请访问 Java for循环。 在这里,请注意以下声明:

if (i == 5) {
    break;
}

这意味着,当i的值等于 5 时,循环终止。 因此,我们得到的输出值仅小于 5。


示例 2:Java break语句

下面的程序计算用户输入的数字总和,直到用户输入负数。

为了接受用户的输入,我们使用了Scanner对象。 要了解有关Scanner的更多信息,请访问 Java Scanner

import java.util.Scanner;

class UserInputSum {
    public static void main(String[] args) {

        Double number, sum = 0.0;

        // create an object of Scanner
        Scanner input = new Scanner(System.in);

        while (true) {
            System.out.print("Enter a number: ");

            // takes double input from user
            number = input.nextDouble();

            // if number is negative the loop terminates
            if (number < 0.0) {
                break;
            }

           sum += number;
        }
        System.out.println("Sum = " + sum);
    }
}

输出

Enter a number: 3.2
Enter a number: 5
Enter a number: 2.3
Enter a number: 0
Enter a number: -4.5
Sum = 10.5

在上面的程序中,while循环的测试表达式始终为true。 在这里,请注意这行,

if (number < 0.0) {
    break;
}

这意味着当用户输入负数时,while循环终止。


Java break和嵌套循环

嵌套循环的情况下,break语句终止最里面的循环。

Java `Break`语句 - 图2

带有嵌套循环的break语句的原理

在这里,break语句终止最内部的while循环,并且控制跳至外部循环。


带标签的break语句

到目前为止,我们已经使用了未带标签的break语句。 它终止最里面的循环和switch语句。 但是,Java 中还有另一种break语句形式,称为带标签的break

我们也可以使用带标签的break语句终止最外面的循环。

Java `Break`语句 - 图3

带标签的break语句的原理

如上图所示,我们已经使用label标识符来指定外部循环。 现在,注意如何使用break语句(break label;)。

在这里,break语句终止了带标签的语句(即外循环)。 然后,程序的控制跳到标记语句之后的语句。

这是另一个例子:

while (testExpression) {
   // codes
   second:
   while (testExpression) {
      // codes
      while(testExpression) {
         // codes
         break second;
      }
   }
   // control jumps here
}

在上面的示例中,当执行语句break second;时,标记为secondwhile循环终止。 并且,程序的控制移至第二个while循环之后的语句。


示例 3:带标签的break语句

class LabeledBreak {
    public static void main(String[] args) {

        // the for loop is labeled as first   
        first:
        for( int i = 1; i < 5; i++) {

            // the for loop is labeled as second
            second:
            for(int j = 1; j < 3; j ++ ) {
                System.out.println("i = " + i + "; j = " +j);

                // the break statement breaks the first for loop
                if ( i == 2)
                    break first;
            }
        }
    }
}

输出

i = 1; j = 1
i = 1; j = 2
i = 2; j = 1

在上面的示例中,labeled break语句用于终止标记为first的循环。 那是,

first:
for(int i = 1; i < 5; i++) {...}

在这里,如果我们将语句break first;更改为break second;,则程序的行为将有所不同。 在这种情况下,标记为秒的for循环将终止。 例如,

class LabeledBreak {
    public static void main(String[] args) {

        // the for loop is labeled as first
        first:
        for( int i = 1; i < 5; i++) {

            // the for loop is labeled as second
            second:
            for(int j = 1; j < 3; j ++ ) {

                System.out.println("i = " + i + "; j = " +j);

                // the break statement terminates the loop labeled as second   
                if ( i == 2)
                    break second;
            }
        }
    }
}

输出

i = 1; j = 1
i = 1; j = 2
i = 2; j = 1
i = 3; j = 1
i = 3; j = 2
i = 4; j = 1
i = 4; j = 2

注意break语句也用于终止switch语句内的大小写。 要了解更多信息,请访问 Java switch语句