循环(中断和返回、继续、标签)- 1

“嗨,阿米戈!”

“今天我会告诉你一些在使用循环时很方便的事情。”

“第一个是关键字break。如果你在循环体中使用这个命令,那么循环将在命令执行时立即终止。这是一个例子:”

例子 输出:
for (int i = 0; i < 10; i++)
{
System.out.println(i);
if (i > 5)
break;
}
0
1
2
3
4
5

“break只能在循环中使用吗?”

“是的。break语句只能在循环中使用,当执行break语句时,循环立即终止。”

“好的,我知道了。”

“太好了。现在我要分享的第二件事是关键字continue。它也只能在循环中使用。当执行此命令时,将立即开始新的循环迭代。换句话说,任何剩余的代码在循环中循环的主体被简单地跳过了。”

“这是一个例子:”

例子 输出:
for (int i = 0; i < 10; i++)
{
if (i % 2 == 0)
continue;
System.out.println(i);
}
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。”