-
废话
-
或许你已经听过goto语句之争,也知道在Java中goto仍然是一个保留的keyword,但不允许使用。先来看看goto的经典使用方法:
1:statement1;
2:statement_label_for_section2:
3:statement2;
4:goto statement_label_for_section2; |
可以看出 2:statement_label_for_section2: 为一代码片段(Section)的开始标记。
Java语言中不允许使用goto,但可以使用像 2:statement_label_for_section2: 一样的代码片段标记作为 break/continue的跳转目标。
相关标准文件请参见:<<Java Language Spec. >>14.7 Labeled Statements
-
应用
-
嵌套循环中,我有时会需要从内循环中直接跳到外循环。用Labeled Statements就可以方便实现。
1: for(int I1 = 0; I1 < 10; I1++) { 2: loop1: 3: for(int I2 = 0; I2 < 20; I1++) { 4: break loop1; 5: } 6: } |
continue的用法与break的用法是一样的。
Java语言中还有很多没有广泛应用的小点子。请参见:<<Java Language Spec. >>
-
Blocks
-
<<Java Language Spec. >>14.2 Blocks
或许你跟我一样都是个懒鬼。特别在Test Case 代码当中,我经常需要在同一Method中定义一大堆的对象,这些对象的操作大者是大同小异的,你应该知道我在想什么了:Copy&Past。而为每个对象都起一个不同的名字是件痛苦的事。同时这些对象往往只是短命鬼。
1:import java.util.ArrayList; 2:import java.util.Collection; 3: 4:public class T2 { 5: 6: public static void main(String[] args) { 7: { 8: Collection c = new ArrayList(); 9: c.add( "1" ); 10: c.clear(); 11: } 12: { 13: Collection c = new ArrayList(); 14: c.add( "2" ); 15: c.clear(); 16: } 17: } 18: 19:} |