0. 概述
在大部分有goto关键字的语言中,都是结合 label 一起使用的。 而Java中,goto 只是保留字,并非关键字,也就是不能使用。 但偏偏 label (标号) 可以使用。主要为了解决多重循环时,直接跳到外面循环,和 break,continue 结合使用。
1. 用法
label:
{
// 业务逻辑
if(condition) break label;
// 如果条件为真是不会执行到这里
}
2. 用标号退出多重循环:
public static void main(String[] args) {
finish:
for (int i = 0; i < 8; i++) {
for (int j = 0; j < 8; j++) {
if (j == 4) {
break finish;
} else {
System.out.println("i=" + i + ",j=" + j);
}
}
}
}
3. 不用标号实现退出多重循环:
public static void main(String[] args) {
boolean flag = true;
for (int i = 0; i < 8 && flag; i++) {
for (int j = 0; j < 8; j++) {
if (j == 4) {
flag = false;
break;
} else {
System.out.println("i=" + i + ",j=" + j);
}
}
}
}
4. label 到来的坑, 没有解决实际问题,却引入了复杂度
public class Test {
static int DEFAULT_TYPE = 1;
static void doSomething(int type){
System.out.println("type = " + type);
}
public static void main(String[] args) {
defaultProcess: doSomething (DEFAULT_TYPE);
}
}
显示一个别名,这种情况应该用注释。
public static int myMethod(){
http://www.google.com
return 1;
}
这种纯粹是写来让别人看不懂的。但是却运行正常。