为什么Java源代码中的超链接不会产生编译错误?

时间:2017-04-18 10:26:39

标签: java

在源代码中,我忘了在链接之前添加注释。 例如,以下代码:

public class HelloWorld
{
  public static void main(String[] args)
  {
    http://www.example.com/random-link-here
    System.out.println("Hello World!");
  }
}

为什么要编译?以某种方式无法弄清楚它的作用......它就像Goto +评论的标签,但是Java没有goto ...

3 个答案:

答案 0 :(得分:6)

http:部分是label标记后面的语句。 //部分引入了line comment

通常,您会在定向break情况下看到带标签的语句,例如:

outer:
for (int i = 0; i < 10; ++i) {
    for (int j = 0; j < 10; ++j) {
         if (someConditionThatNeedsToTakeUsOutOfBothLoops) {
             break outer;
         }
    }
}

...但是任何声明都可能有标签。在您的情况下,您已标记System.out.println("Hello World!");声明。

答案 1 :(得分:5)

因为:

http:   //www.example.com/random-link-here
^^^^    ^--------------------------------^

http:标签,其余为评论

答案 2 :(得分:1)

这是一个着名的Java Puzzler。它是带注释的goto的标签。 Java保留goto关键字,但实际上并没有实现goto语句。从http://www.javapuzzlers.com/看Puzzler 22作为一个相关的例子。