“嗨,阿米戈!”
“今天我会告诉你一些在使用循环时很方便的事情。”
“第一个是关键字break。如果你在循环体中使用这个命令,那么循环将在命令执行时立即终止。这是一个例子:”
例子 | 输出: |
---|---|
|
0 1 2 3 4 5 |
“break只能在循环中使用吗?”
“是的。break语句只能在循环中使用,当执行break语句时,循环立即终止。”
“好的,我知道了。”
“太好了。现在我要分享的第二件事是关键字continue。它也只能在循环中使用。当执行此命令时,将立即开始新的循环迭代。换句话说,任何剩余的代码在循环中循环的主体被简单地跳过了。”
“这是一个例子:”
例子 | 输出: |
---|---|
|
1 3 5 7 9 |
“那么,一旦程序在循环中到达一个继续命令,它就会停止执行循环中的代码?”
“不,你看,当我们多次执行相同的代码时,我们有一个循环。在上面的例子中,我们有一个从 0 到 9 的循环,即循环体将执行 10 次。对吧?”
“是的。”
“通过循环体一次称为迭代。我们的循环包含 10 次迭代——循环体将执行十次。”
“是的,这很清楚。”
“ continue命令提前终止当前迭代,即跳过循环内的任何剩余代码并开始新的迭代。”
“这是另一个例子:”
ArrayList list = new ArrayList();
for (Object o: list)
{
if (o == null) continue;
System.out.println(o.toString());
}
“在这个例子中,我们显示了列表中所有对象的字符串表示形式。但是我们跳过了所有为空的对象。”
“行了,知道了,我看这多方便了。”
“是的。我还想告诉你关于标签的事。它们在 Java 中很少使用,因为它们经常违反程序逻辑的美感。但你可能会在某些时候在代码中遇到它们。所以我宁愿告诉你关于他们比你在操场上听说过的还要多。”
“曾几何时,允许从代码中的任何行跳转到任何行。我们使用标签和 goto 语句来做到这一点。它看起来是这样的:”
System.out.println("Make cookies,");
label: System.out.println("not");
System.out.println("war");
goto label;
“在这个例子中,执行goto label命令后,程序跳转到标记为label的行。
“后来大家见机行事,决定不用goto语句了,Java不支持goto,不过goto是保留字,没什么大不了的……”
“所以,在 Java 中没有 goto 和标签?”
“没有goto语句,但是有标签!”
“怎么可能?”
“在 Java 中,标签可以与 continue 和 break 命令一起使用。当你有很多嵌套循环时使用它们。”
“例如,假设你有 5 个嵌套循环,当满足某些条件时,你想退出其中的三个,但不是全部。标签是一种优雅的方式来做到这一点:”
label1: for (int i = 0; i < 10; i++)
label2: for (int j = 0; j < 10; j++)
label3: for (int k =0; k < 10; k++)
if (i == j && j == k)
break label2;
“在这个例子中,当 break 语句被执行时,我们不是退出带有变量 k 的循环,而是退出标记为 label2 的循环——即我们立即退出带有 k 和 j 的两个循环。”
“多久用一次?”
“老实说,不经常,但你永远不知道。也许你会在某个时候看到它。这些是语法基础——你需要知道这一切!”
“好的。谢谢你,Bilaabo。”