【Java 支持 goto 吗?
Java 不支持 goto,它被保留为一个关键字,以防他们想将其添加到更高的版本中。
- 与 C/C++不同,java 没有 goto 语句,但是 Java 支持标签。
- 标签在 Java 中唯一有用的地方就是嵌套循环语句之前。
- 我们可以用 break 来指定标签名,以打破一个特定的外部循环。
- 同样,可以用 continue 指定标签名。
在 Java 中使用带标签的 break】
Java 语言(一种计算机语言,尤用于创建网站)
// Java code to illustrate
// using label and break
// instead of goto
// file name: Main.java
public class Main {
public static void main(String[] args)
{
// label for outer loop
outer:
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 10; j++) {
if (j == 1)
break outer;
System.out.println(" value of j = " + j);
}
} // end of outer loop
} // end of main()
} // end of class Main
Output:
value of j = 0
使用 Java 中的继续标签
我们也可以用 continue 代替 break。参见以下程序示例。
Java 语言(一种计算机语言,尤用于创建网站)
// Java code to illustrate
// using label and continue
// instead of goto
// file name: Main.java
public class Main {
public static void main(String[] args)
{
// label for outer loop
outer:
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 10; j++) {
if (j == 1)
continue outer;
System.out.println(" value of j = " + j);
}
} // end of outer loop
} // end of main()
} // end of class Main
Output:
value of j = 0
value of j = 0
value of j = 0
value of j = 0
value of j = 0
value of j = 0
value of j = 0
value of j = 0
value of j = 0
value of j = 0
解释:由于 continue 语句会跳到循环中的下一次迭代,所以当我从 0 迭代到 9 时,它会迭代 10 次。因此,外部循环执行 10 次,内部 for 循环在每个外部循环中执行 1 次。 Java 没有 goto 语句,因为它提供了一种以任意和非结构化方式进行分支的方法。这通常会使 goto-rided 代码难以理解和维护。它还禁止某些编译器优化。然而,在一些地方,goto 对于流控制来说是一个有价值且合法的构造。例如,当您退出一组深度嵌套的循环时,goto 会很有用。为了处理这种情况,Java 定义了 break 语句的扩展形式。 标记中断语句的一般形式是:
break label;
例 1:
Java 语言(一种计算机语言,尤用于创建网站)
// Java code
public class Label_Break1 {
public static void main(String[] args)
{
boolean t = true;
first : {
second : {
third : {
System.out.println("Before the break");
if (t) // break out of second block
break second;
}
System.out.println("This won't execute");
}
System.out.println("This is after the second block");
}
}
}
// This code is contributed by Sagar Gupta
Output:
Before the break
This is after the second block
例 2:
Java 语言(一种计算机语言,尤用于创建网站)
// Java code
public class Label_Break2 {
public static void main(String[] args)
{
outer:
for (int i = 0; i < 3; i++) // label
{
System.out.print("Pass " + i + ": ");
for (int j = 0; j < 100; j++) {
if (j == 10) {
break outer; // Exit both loops
}
System.out.print(j + " ");
}
System.out.println("This will not be printed");
}
System.out.println("Loops Complete.");
}
}
// This code is contributed by Sagar Gupta
Output:
Pass 0: 0 1 2 3 4 5 6 7 8 9 Loops Complete.
如果你发现任何不正确的地方,或者你想分享更多关于上面讨论的话题的信息,请写评论。
版权属于:月萌API www.moonapi.com,转载请注明出处