【问题标题】:Purpose of goto in java [duplicate]java中goto的目的[重复]
【发布时间】:2013-04-13 13:47:53
【问题描述】:

我知道goto 是java 中的一个关键字。另外,从wiki,我可以摘录一句,“没用过,没有功能”。

我想知道,如果goto 没有用处且在任何地方都没有使用,为什么将其声明为关键字? 有人在java程序中使用过goto吗?是否还有其他关键字类似于在 java 编程中声明的 goto 但隐喻没有用处。

我们在日常编程中什么时候使用 goto,或者很少在什么时候使用?

【问题讨论】:

  • 右边的小 [2] 导致“关键字 const 和 goto 被保留,即使它们当前未使用。如果这些 C++ 关键字不正确,这可能允许 Java 编译器生成更好的错误消息出现在节目中。”
  • 已在 SO 上发布。

标签: java


【解决方案1】:

这里是关于 goto 语句的一些总结

用法:

它们用于跳出语言中的语句块,JMP指令在汇编级别完成这项工作。

Goto 是严格禁止的,因为它们使程序难以追踪 代码中的过多跳转会使其变慢。想象一个循环进入其中。一点都不好。

Java保留这个关键字可能是因为它还涉及到jvm内部的一些本机代码(有点C/C++)代码,可能是为了避免歧义。

Java 提供了 break 作为 goto 的实现,但它的使用也受到限制,不应经常使用。

Here's an example of break as a GOTO in java

【讨论】:

    【解决方案2】:

    声明它而不使用它的原因是保留它以防将来需要它。它目前没有任何作用。

    constanother 保留字,不做任何事情。由于它们是保留的,因此您不能在程序中使用它们(作为变量)。

    【讨论】:

      【解决方案3】:

      要找出gotoconst 最初被保留的真正原因,您需要询问Java 语言设计人员。当语言被称为 Oak 时,就会做出决定。

      有几个似是而非的解释:

      • 他们认为他们可能需要以可能使用这些关键字的方式扩展语言,并且他们保持选择开放。

      • 他们希望避免 C/C++ 程序员在阅读 Java 代码时出现认知失调,其中一些被误导的人决定使用“goto”或“const”作为变量或方法名称。

      但显而易见的事实是,这些保留字现在被使用的可能性为零。


      更新

      显然Java 确实 在某一时刻已经转到了。

      “我所做的其中一件事是 goto 存在一些问题。Java 曾经有一个 goto。我研究了人们对 goto 所做的事情?基于对 50 万的研究几行代码,我就删掉了。”

      来自"James Gosling on Java, May 2001"

      所以真正的解释是 goto 是保留的,因为它在 Java 的早期版本中使用过,他们决定去掉它。

      【讨论】:

        【解决方案4】:

        go to 语句在java中可用。但它被标记为“未使用”。

        您可以使用带标签的 break 语句代替 goto

        BREAK

        【讨论】:

          【解决方案5】:

          Java keyword list 指定 goto 关键字,但它被标记为“未使用”。 查看Java关键字列表,了解还有哪些关键字类似于在Java编程中声明的goto,但隐喻没有用处。

          startAgain:
          for(int i =0; i <10 ;i++){
              for(int i =0; i <10 ;i++){
                  if(someCondition)
                  break startAgain;
          
              }
          
          }
          

          上面的代码有点类似于 goto。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2011-10-02
            • 1970-01-01
            • 2013-09-22
            • 2011-10-01
            • 1970-01-01
            • 1970-01-01
            • 2013-11-18
            • 1970-01-01
            相关资源
            最近更新 更多