我对此感到困惑。我们大多数人都听说过Java中没有goto语句。
但我发现它是Java中的关键字之一。它可以在哪里使用?如果它不能使用,那么为什么它作为关键字包含在Java中?
我对此感到困惑。我们大多数人都听说过Java中没有goto语句。
但我发现它是Java中的关键字之一。它可以在哪里使用?如果它不能使用,那么为什么它作为关键字包含在Java中?
当前回答
http://docs.oracle.com/javase/specs/jvms/se7/html/jvms-6.html#jvms-6.5.goto
如果有人告诉你Java中没有goto语句,那你就被骗了。事实上,Java由两层“源代码”组成。
其他回答
goto不在Java中
你必须使用GOTO 但它不能正常工作。在关键的Java词中,它没有被使用。 http://docs.oracle.com/javase/tutorial/java/nutsandbolts/_keywords.html
public static void main(String[] args) {
GOTO me;
//code;
me:
//code;
}
}
http://java.sun.com/docs/books/tutorial/java/nutsandbolts/_keywords.html
关键字const和goto是 矜持,尽管事实并非如此 目前使用。”
因为尽管Java语言不使用它,但JVM字节码使用它。
理解goto结构是程序员用机器代码和汇编语言编程时遗留下来的,这一点很重要。因为这些语言非常基础(每条指令只做一件事),程序控制流完全由goto语句完成(但在汇编语言中,这些被称为跳转或分支指令)。
现在,虽然C语言是相当低级的,但它可以被认为是非常高级的汇编语言——C中的每个语句和函数都可以很容易地分解成汇编语言指令。尽管C语言不是当今计算机编程的主要语言,但它仍然在低级应用程序中大量使用,例如嵌入式系统。因为C语言的函数非常接近汇编语言的函数,所以只有在C中包含goto才有意义。
It is clear that Java is an evolution of C/C++. Java shares a lot of features from C, but abstracts a lot more of the details, and therefore is simply written differently. Java is a very high-level language, so it simply is not necessary to have low-level features like goto when more high-level constructs like functions, for, for each, and while loops do the program control flow. Imagine if you were in one function and did a goto to a label into another function. What would happen when the other function returned? This idea is absurd.
这并不一定能回答为什么Java包含goto语句却不让它编译,但重要的是要知道为什么goto在较低级的应用程序中首先被使用,以及为什么在Java中使用它没有意义。
因此,如果语言设计者觉得有必要的话,它们是可以被使用的。
此外,如果来自具有这些关键字的语言的程序员(例如。C, c++)错误地使用它们,那么Java编译器可以给出有用的错误消息。
或者只是为了阻止程序员使用goto:)