欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Java中goto标签的使用

程序员文章站 2022-07-02 14:04:16
编写此文仅为以后可以复习。 最近在自学Java核心技术(很好的书,推荐!!),也是第一次从上面了解了goto,或许只是浅层了解。 错误之处希望大佬们给予批评与建议!!谢谢!!! Java核心技术中就提到过:无限制的使用goto语句确实是导致错误的根源,但是有些情况下,偶尔使用goto 跳出循环 还是 ......

编写此文仅为以后可以复习。

最近在自学Java核心技术(很好的书,推荐!!),也是第一次从上面了解了goto,或许只是浅层了解。

错误之处希望大佬们给予批评与建议!!谢谢!!!

Java核心技术中就提到过:无限制的使用goto语句确实是导致错误的根源,但是有些情况下,偶尔使用goto 跳出循环 还是有益处的。

下面首先看一下不带goto标签的break语句:

while ( years <= 100 ){

  balance += payment;

  double interest = balance * interestRate / 100;

  balance += interest;

  if ( balance >= goal ) break;

  years++;

}

  

很简单的break循环,在循环开始时,如果years > 100,或者在循环体中balance >= goal,则退出循环语句。

下面是带goto标签的break语句,请注意,标签必须放在希望跳出的最外层循环之前,并且必须紧跟一个冒号,:

Scanner in = new Scanner(System.in);
int n;
read_data:
while(. . .) //这个循环语句用标签加标签
{
  . . .
  for (. . .) //这个内部循环没有标记
  {
    System.out.print("Enter a number >= 0: ");
    n = in.nextInt();
    if(n < 0) //不应该发生-不能继续
      break read_data;  
      //返回 read_data 循环
    . . .
  }
}
// 此语句在标记中断后立即执行
if (n < 0) // 检查不良情况
{
  // 处理不良情况
}
else
{
  // 进行正常加工
}

如果输入有误,通过执行带标签的break跳转到带标签的语句块末尾。对于任何使用break语句的代码都要检测循环是正常结束,还是由break跳出。

事实上,可以将标签应用到任何语句中,甚至可以应用到if语句或者块语句中,如下所示:

label:
{
    . . .
    if(condition) break label;// exits block
    . . .
}
//当中断语句执行时跳转到这里

因此,如果希望使用一条goto语句,并将一个标签放在想要跳转的语句块之前,就可以使用break语句!当然,前面说过了Java语句中不提倡,大家了解就行。

另外,只能跳出语句块,而不能跳入语句块。