我对此感到困惑。我们大多数人都听说过Java中没有goto语句。
但我发现它是Java中的关键字之一。它可以在哪里使用?如果它不能使用,那么为什么它作为关键字包含在Java中?
我对此感到困惑。我们大多数人都听说过Java中没有goto语句。
但我发现它是Java中的关键字之一。它可以在哪里使用?如果它不能使用,那么为什么它作为关键字包含在Java中?
当前回答
它被认为是不能做的事情之一,但可能被列为保留词,以避免开发人员感到困惑。
其他回答
它们被保留以供将来使用(请参阅:Java语言关键字)
关键字const和goto是保留的,即使它们目前没有被使用。
Java中没有goto语句的原因可以在“Java语言环境”中找到:
Java has no goto statement. Studies illustrated that goto is (mis)used more often than not simply "because it's there". Eliminating goto led to a simplification of the language--there are no rules about the effects of a goto into the middle of a for statement, for example. Studies on approximately 100,000 lines of C code determined that roughly 90 percent of the goto statements were used purely to obtain the effect of breaking out of nested loops. As mentioned above, multi-level break and continue remove most of the need for goto statements.
不,没有使用goto,但是您可以定义标签并留下一个到标签的循环。您可以使用break或continue后跟标签。所以你可以跳出多个循环层。看看教程。
我也不喜欢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的代码可读性强多了,不是吗?
因为尽管Java语言不使用它,但JVM字节码使用它。
禁止声明同名变量。
如。 Int I = 0, goto;