Java标号,也叫标签。虽然一直存在着,却没有用过。突然一个网友问起来,才开始去注意这个东西。
网友的程序:
要实现的功能一目了然,程序也算简洁。但是却出错了: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的指令。应用这个特点,可以写出很多很巧妙的东西。
2.用while代替:
网友的程序:
int b = 65;
show:
System.out.println("Hello");
switch (b) {
case 65:
System.out.println("AAAA");
++b;
break show;
default:
System.out.println("BBBBBB");
}
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");
}
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;
}
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