YCOE

You Can't stOp mE!

导航

Java中的标号

Posted on 2006-06-02 14:22  YCOE  阅读(5454)  评论(3编辑  收藏  举报
      Java标号,也叫标签。虽然一直存在着,却没有用过。突然一个网友问起来,才开始去注意这个东西。
网友的程序:
int b = 65;
        show:
            System.out.println(
"Hello");
        
switch (b) {
        
case 65:
            System.out.println(
"AAAA");
            
++b;
            
break show;
        
default:
            System.out.println(
"BBBBBB");
        }

      要实现的功能一目了然,程序也算简洁。但是却出错了:The label choice is missing。这是在Eclipse中的报错
      在C++甚至汇编中都存在这种类型的标签,可以通过goto直接跳转到该行。但是,在Java中,goto虽然是一个保留字,却没有真正用上。为的就是改善这种乱跳引起的程序混乱。虽然标签一直保留着,而且在break或是continue中仍然可用,但却没有C++中那么放纵。
    Java标签,只能用在for, switch, while这些可以用continue或break的语句中。但自由已经限得很死了。标签只能加在这些语法的前面,而且要紧接着。不然就会出现The label ××× is missing的错误。有了这些限制,程序就不会乱转了。但是这样一来,标签的作用又大大降低。甚至不能实现初衷了。但是我们可以用另一种方式去实现它:
    1.把整个break语句去掉,当程序执行完case 65以后,没有跳出,而是接着执行default的指令。应用这个特点,可以写出很多很巧妙的东西。
        int b = 65;
        show:
            System.out.println(
"Hello");
        
switch (b) {
        
case 65:
            System.out.println(
"AAAA");
            
++b;
        
default:
            System.out.println(
"BBBBBB");
        }

    2.用while代替:
        int b = 65;
        
while (true{
            show: System.out.println(
"Hello");
            
switch (b) {
            
case 65:
                System.out.println(
"AAAA");
                
++b;
            
default:
                System.out.println(
"BBBBBB");
                
break;
            }

            
break;
        }

      这是一个很通用的方法。

 

    乱七八糟的东西,随便写写。没什么啦,一点学习心得而已。。。
                     --原创文章,可以随意复制发表,但请注明出处与作者
                   BY YCOE