新发现了Java一个语法,可以给花括号内的代码块定名

新发现了Java一个语法,可以给花括号内的代码块命名

 

 

 

 

 

 

 

 

 

 

 

今天在看某开源项目的源代码时发现一个很有趣的Java语法,见代码:

		bb : for (int num = 1; num <= 10; num++) {
			System.out.println("--------------- num : " + num);
			for (int i = 0; i < 5; i++) {
				if(num == 8) break bb;
				System.out.println("curr : " + i);
			}
		}
		cms : if(true) {
			System.out.println("test");
			break cms;
		}

在多重嵌套循环的情况下,可以任意跳出某个父级循环 ,这个语法平时还是有用的,所以分享一下,知道的朋友不要拍砖,不要投新手帖,因为我认为很多朋友都不知道,呵呵!

 

以上代码测试运行在:JDK1.6下。


新发现了Java一个语法,可以给花括号内的代码块定名

28 楼 teacher1998 2011-02-23  
在core java的第三章: fundamental programming structures in java里有所,
如上面同志所述,这是替代goto的。
29 楼 hyl1234 2011-02-23  
方法在书中的确看到过,不过一直都没有用。
不过LZ还是有心了。
30 楼 xiang04551ran 2011-02-23  
java书里面讲for循环一般都会讲到吧
31 楼 Rooock 2011-02-23  
i2534 写道
这个就不能用.
goto的苦还没吃够吗?
特别是在多重循环嵌套中用这个就是噩梦.
谁用谁知道.



还真是谁用谁知道.
我在js的多重循环里用着很好.
32 楼 sw1982 2011-02-23  
label, c语言开始就有
33 楼 maowei009 2011-02-23  
天呐,竟然有很多人不知道这个用法么?java基本语法不是有这个的么~~ :
34 楼 thihy 2011-02-23  
这个确认很多人不知道。但却是基本语法。为啥呢?因为大家学Java很不系统,基础不够扎实。
35 楼 hydrogen2008 2011-02-23  
这个确实是基本的东西,很多书上都会介绍。
记的很清楚,我们老师当时就说了这个不要用。
36 楼 sheep3600 2011-02-23  
唉,switch时候用到过break,剩下的都没用过。
37 楼 Brera 2011-02-23  
去年用过一次,在没用过
38 楼 cectsky 2011-02-23  
sw1982 写道
label, c语言开始就有

您的头像给力
39 楼 caoxudong818 2011-02-23  
兰州,你可以在代码里的某一行加入一段网址,不会出错。
例如:
public static void main(String[] args) {
        Date d = new Date(0);
        System.out.println("toString: " + d);
        DateFormat df = DateFormat.getDateTimeInstance();
        http://www.google.com
        System.out.println("Default format: " + df.format(d));
        df.setTimeZone(TimeZone.getTimeZone("GMT"));
        System.out.println("Near the Bow Bells: " + df.format(d));
    }
40 楼 cectsky 2011-02-24  
caoxudong818 写道
兰州,你可以在代码里的某一行加入一段网址,不会出错。
例如:
public static void main(String[] args) {
        Date d = new Date(0);
        System.out.println("toString: " + d);
        DateFormat df = DateFormat.getDateTimeInstance();
        http://www.google.com
        System.out.println("Default format: " + df.format(d));
        df.setTimeZone(TimeZone.getTimeZone("GMT"));
        System.out.println("Near the Bow Bells: " + df.format(d));
    }

介绍一下
41 楼 ericyanzhe 2011-02-24  
thihy 写道
这个确认很多人不知道。但却是基本语法。为啥呢?因为大家学Java很不系统,基础不够扎实。

不一定不系统吧,当初在大学里面老是只是提到过,但是压根就不许我们用。相信很多人不用的话都会忘掉。
42 楼 sunrie 2011-02-24  
宁愿单独增加一个条件变量来处理也不用这个!
43 楼 qjtttt 2011-03-20  
nesuk 写道
这种风格的代码在反编译是会出现问题,所以也不被提倡。

有问题么- -?我咋不晓得呢。。
44 楼 sjmei 2011-03-22  
嗯,学习了
45 楼 zhouhaoqun_luntan 2011-03-25  
前阵子刚用过,不过书上好像都不推荐
46 楼 coolboywy 2011-03-28  
caoxudong818 写道
兰州,你可以在代码里的某一行加入一段网址,不会出错。
例如:
public static void main(String[] args) {
        Date d = new Date(0);
        System.out.println("toString: " + d);
        DateFormat df = DateFormat.getDateTimeInstance();
        http://www.google.com
        System.out.println("Default format: " + df.format(d));
        df.setTimeZone(TimeZone.getTimeZone("GMT"));
        System.out.println("Near the Bow Bells: " + df.format(d));
    }


确定http:不会被打上红色波浪线?
47 楼 congdepeng 2011-03-28  
代码和数组一样,都是以开头的一个指针指向的。

所以这样的写法和Python里面的写法一样的自然。