黑马程序员技术交流社区

标题: 奇葩的小代码 [打印本页]

作者: fso918    时间: 2011-10-13 12:43
标题: 奇葩的小代码
class Test{
        public static void main(String[] args){
                  System.out.oprintln("Hello ");
                  http://www.google.com
                  System.out.println("World");
         }
}
为什么编译器不提示错误呢?
且能正常运行。
作者: 王振宇    时间: 2011-10-13 12:56
呵呵,就是挺奇怪;
试了试 其实不是加 “http://www.google.com”起得什么作用
关键是有个":"
"//"已经把后面的代码注释掉了
abc:System.out.println..... 也能编译通过
xx:;
什么也不写也能编译通过
我查百度没查出来!~~

作者: 许冉    时间: 2011-10-13 13:05
本帖最后由 xuan 于 2011-10-13 13:06 编辑

你一不小心就符合了java的语言规范,主要是这句,http://www.google.com
双斜杠就不用说了 ,那么注释
那么“//www.google.com”这一部分就合法了
"http:"在java中这种写法叫做标签,用于定义循环体,也是合法的
如果放在某个for循环前面,就说明这个for循环有个名字,叫http
只不过你这个没有循环体而已,但语法没有错误,就想定义一个类,光有个类名,没有类的内容
既然都是合法的 那么当然不会报错了


作者: 朱华    时间: 2011-10-13 13:10
纯手打,请区分。
你知道在C中有一种goto的定义么?
JAVA也有goto,不过频繁的使用goto会严重破坏代码的可读性,所以sun不建议使用goto,但仍然保留了这个方式。
  1.     public static void main(String[] args){
  2.               System.out.println("Hello ");
  3.               thisIsPartOfCode:
  4.               System.out.println("World");
  5.      }
复制代码
在上面这段代码中,thisIsPartOfCode下面的代码,可以看做是代码的一段,然后你用
goto thisIsPartOfCode,可以让程序跳到这个位置继续向下执行,在C中,这种用法常用在跳出循环。
作者: 朱华    时间: 2011-10-13 13:22
不好意思补充一句。。
  1. class Test{
  2.         public static void main(String[] args){
  3.                   System.out.oprintln("Hello ");
  4.                   http://www.google.com
  5.                   System.out.println("World");
  6.          }
  7. }
复制代码
你的代码中的第4句,http://www.google.com,//后面的内容被注释掉了,相当于你定了一个名叫http的标签,在JAVA中虽然你不能像C那样直接goto http,但是可以用break http或者continue http来使用,常用的形式是:
  1.               loop1:
  2.                       for (int i=0;i<3;i++) {
  3.                               System.out.println("我是循环1");
  4.                               loop2:
  5.                               for (int j=0;j<3;j++) {
  6.                                       System.out.println("我是循环2");
  7.                                       if (j == 2) {
  8.                                               continue  loop1;
  9.                                       }
  10.                               }
  11.                       }
复制代码

作者: fso918    时间: 2011-10-13 13:40
朱华 发表于 2011-10-13 13:22
不好意思补充一句。。你的代码中的第4句,http://www.google.com,//后面的内容被注释掉了,相当于你定了一 ...

谢谢
了解了
作者: 朱华    时间: 2011-10-17 14:53
fso918 发表于 2011-10-13 13:40
谢谢
了解了

没事儿,不用谢~
作者: 张振宁    时间: 2011-10-18 17:06
              System.out.oprintln("Hello ");
这句话编译不可能通过。
http:  这个可以通过。

http:
for (int i = 0; i < 5; i++) {
continue http;
System.out.println(123);
}
这个是循环的跳出的标识
continue http;后代码全都不运行。

作者: 余志强    时间: 2011-10-18 18:04
支持啊楼上




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2