在Java中,break语句有3种作用。第一,你已经看到,在switch语句中,它被用来终止
一个语句序列。第二,它能被用来退出一个循环。第三,它能作为一种“先进”的goto 语
句来使用。下面对最后 2种用法进行解释。
使用break 退出循环
可以使用break语句直接强行退出循环,忽略循环体中的任何其他语句和循环的条件测
试。在循环中遇到break语句时,循环被终止,程序控制在循环后面的语句重新开始。下面
是一个简单的例子:
// Using break to exit a loop.
class BreakLoop {
public static void main(String args[]) {
for(int i=0; i<100; i++) {
if(i == 10) break; // terminate loop if i is 10
System.out.println("i: " + i);
}
System.out.println("Loop complete.");
}
}
该程序产生如下的输出:
i: 0
i: 1
i: 2
i: 3
i: 4
i: 5
i: 6
i: 7
i: 8
i: 9
Loop complete.
正如你看到的那样,尽管for循环被设计为从 0执行到99,但是当i等于10时,break语
句终止了程序。
break语句能用于任何 Java循环中,包括人们有意设置的无限循环。例如,将上一个程
序用while循环改写如下。该程序的输出和刚才看到的输出一样。
// Using break to exit a while loop.
class BreakLoop2 {
public static void main(String args[]) {
int i = 0;
while(i < 100) {
if(i == 10) break; // terminate loop if i is 10
System.out.println("i: " + i);
i++;
} 第 5 章 程序控制语句 85
System.out.println("Loop complete.");
}
}
在一系列嵌套循环中使用break语句时,它将仅仅终止最里面的循环。例如:
// Using break with nested loops.
class BreakLoop3 {
public static void main(String args[]) {
for(int i=0; i<3; i++) {
System.out.print("Pass " + i + ": ");
for(int j=0; j<100; j++) {
if(j == 10) break; // terminate loop if j is 10
System.out.print(j + " ");
}
System.out.println();
}
System.out.println("Loops complete.");
}
}
该程序产生如下的输出:
Pass 0: 0 1 2 3 4 5 6 7 8 9
Pass 1: 0 1 2 3 4 5 6 7 8 9
Pass 2: 0 1 2 3 4 5 6 7 8 9
Loops complete.
从中可以看出,在内部循环中的break语句仅仅终止了该循环,外部的循环不受影响。
关于break,在这里要记住两点。首先,一个循环中可以有一个以上的break语句。但要
小心,太多的break语句会破坏你的代码结构。其次,switch语句中的break仅仅影响该switch
语句,而不会影响其中的任何循环。
注意:break不是被设计来提供一种正常的循环终止的方法。循环的条件语句是专
门用来终止循环的。只有在某类特殊的情况下,才用break语句来取消一个循环。
2.return 一旦return语句被执行,程序控
制传递到它的调用者。
3.如果你需要通过计算来初始化你的static变量,你可以声明一个static块,Static块仅在该
类被加载时执行一次。下面的例子显示的类有一个static方法,一些static变量,以及一个static
初始化块:
// Demonstrate static variables,methods,and blocks.
class UseStatic {
static int a = 3;
static int b;
static void meth(int x) {
System.out.println("x = " + x);
System.out.println("a = " + a);
System.out.println("b = " + b);
}
static {
System.out.println("Static block initialized.");
b = a * 4;
}
public static void main(String args[]) {
meth(42);
}
}
4.一个变量可以声明为final,这样做的目的是阻止它的内容被修改。这意味着在声明final
变量的时候,你必须初始化它(在这种用法上,final类似于C/C++中的const)。例如:
final int FILE_NEW = 1;
final int FILE_OPEN = 2;
final int FILE_SAVE = 3;
final int FILE_SAVEAS = 4;
final int FILE_QUIT = 5;
你的程序的随后部分现在可以使用 FILE_OPEN等等,就好像它们是常数,不必担心
它们的值会被改变。
为final变量的所有的字符选择大写是一个普遍的编码约定。声明为final的变量在实例
中不占用内存。这样,一个final变量实质上是一个常数。
关键字final也可以被应用于方法,但是它的意思和它被用于变量实质上是不同的。f