我对此感到困惑。我们大多数人都被告知Java中没有goto语句。
但我发现它是Java中的关键字之一。它能在哪里使用?如果不能使用,那么为什么将其包含在Java中作为关键字?
我对此感到困惑。我们大多数人都被告知Java中没有goto语句。但我发现它是Java中的关键字之一。它在语法上有效,但Java编程规范建议不要使用它,因为过度或错误使用goto语句可能会导致代码变得难以理解和维护。所以,虽然Java允许使用goto语句,但实际上几乎所有的Java程序都避免使用它。
我对此感到困惑。我们大多数人都被告知Java中没有goto语句。
但我发现它是Java中的关键字之一。它能在哪里使用?如果不能使用,那么为什么将其包含在Java中作为关键字?
我对此感到困惑。我们大多数人都被告知Java中没有goto语句。但我发现它是Java中的关键字之一。它在语法上有效,但Java编程规范建议不要使用它,因为过度或错误使用goto语句可能会导致代码变得难以理解和维护。所以,虽然Java允许使用goto语句,但实际上几乎所有的Java程序都避免使用它。
感谢上天,Java 中没有 goto
。
goto
关键字仅仅是被保留了而已,并未被使用(const
也是同样的情况)。
goto
。同样适用于const
。这两者都用于C++,这可能是它们被保留的原因;意图很可能是为了避免将来从C++迁移到Java的程序员产生困惑,并且也保留了在后续Java版本中使用它们的选项。goto
在不久的将来至少不被支持 ;) - Bozhogoto
可能会因为其他更好的目的而被重新使用。 - Michael Borgwardt是的,这是可能的,但不像在c#中一样好用(在我看来,c#更好!)。认为goto总是会使软件变得模糊和愚蠢的意见是无聊的和愚蠢的!遗憾的是Java至少没有类似于goto case xxx的功能。
前往跳转:
public static void main(String [] args) {
myblock: {
System.out.println("Hello");
if (some_condition)
break myblock;
System.out.println("Nice day");
}
// here code continue after performing break myblock
System.out.println("And work");
}
跳转到后面:
public static void main(String [] args) {
mystart: //here code continue after performing continue mystart
do {
System.out.println("Hello");
if (some_condition)
continue mystart;
System.out.println("Nice day");
} while (false);
System.out.println("And work");
}
请注意,您可以通过以下方式替换大多数goto的良性用途:
return
break
break label
在try-catch-finally中抛出异常
return
。 - Andrew Lazarusgoto
,但是该关键字被保留以防 Sun 有一天想要添加 goto
到 Java 中。他们希望能够在不破坏太多代码的情况下添加它,因此保留了该关键字。请注意,Java 5 中添加了 enum
关键字,也没有破坏太多的代码。goto
,但它有一些结构对应于一些使用 goto
的用法,即能够使用命名循环的 break
和 continue
。此外,finally
可以被认为是一种扭曲的 goto
。这被认为是绝对不应该做的事情之一,但可能将其列为保留字是为了避免开发人员的混淆。
int i = 0, goto;
请查看以下链接,其中显示了所有Java保留字,并告诉您它们被添加到哪个版本中。
http://java.sun.com/docs/books/tutorial/java/nutsandbolts/_keywords.html
保留了"goto"关键字,即使目前并未使用,但永远不要说永远 :)
goto
何时被放逐到保留字的地下世界中,它只是说“未使用”。 - Tech Expert Wizardhttp://docs.oracle.com/javase/specs/jvms/se7/html/jvms-6.html#jvms-6.5.goto
如果有人告诉你Java中没有goto语句,那么他们是在欺骗你。实际上,Java由两层“源”代码组成。
goto
,因为它通常会使代码变得难以阅读。但是,我相信在某些情况下有例外(尤其是在词法分析器和解析器方面!)int line = 1;
boolean running = true;
while(running)
{
switch(line++)
{
case 1: /* line 1 */
break;
case 2: /* line 2 */
break;
...
case 42: line = 1337; // goto 1337
break;
...
default: running = false;
break;
}
}
你基本上编写了一个虚拟机来执行你的二进制代码...其中line
对应于指令指针。
这比使用goto
的代码更易读,不是吗?