break,continue
Java实现类似goto功能,for/while类同
Break
@Test
public void oneBreak() {
out:
for (int i = 0; i < 10; i++) {
System.out.println(i + " before");
if (i == 5){
break out;
}
System.out.println(i + " after");
}
System.out.println("finish");
}
/*0 before
0 after
1 before
1 after
2 before
2 after
3 before
3 after
4 before
4 after
**5 before**
finish*/
Continue
@Test
public void oneContinue() {
out:
for (int i = 0; i < 10; i++) {
System.out.println(i + " before");
if (i == 5){
continue out;
}
System.out.println(i + " after");
}
System.out.println("finish");
}
/* 0 before
0 after
1 before
1 after
2 before
2 after
3 before
3 after
4 before
4 after
**5 before**
6 before
6 after
7 before
7 after
8 before
8 after
9 before
9 after
finish*/
Break
Inner
@Test
public void manyInnerBreak() {
out:
for (int i = 0; i < 5; i++) {
inner:
for (int j = 0; j < 5; j++) {
System.out.println("i = "+ i + " j = " + j +" before");
if (j == 2){
break inner;
}
System.out.println("i = "+ i + " j = " + j + " after");
}
}
System.out.println("finish");
}
i = 0 j = 0 before
i = 0 j = 0 after
i = 0 j = 1 before
i = 0 j = 1 after
i = 0 j = 2 before
i = 1 j = 0 before
i = 1 j = 0 after
i = 1 j = 1 before
i = 1 j = 1 after
i = 1 j = 2 before
i = 2 j = 0 before
i = 2 j = 0 after
i = 2 j = 1 before
i = 2 j = 1 after
i = 2 j = 2 before
i = 3 j = 0 before
i = 3 j = 0 after
i = 3 j = 1 before
i = 3 j = 1 after
i = 3 j = 2 before
i = 4 j = 0 before
i = 4 j = 0 after
i = 4 j = 1 before
i = 4 j = 1 after
i = 4 j = 2 before
finish
Out
@Test
public void manyOutBreak() {
out:
for (int i = 0; i < 5; i++) {
inner:
for (int j = 0; j < 5; j++) {
System.out.println("i = "+ i + " j = " + j +" before");
if (j == 2){
break out;
}
System.out.println("i = "+ i + " j = " + j + " after");
}
}
System.out.println("finish");
}
i = 0 j = 0 before
i = 0 j = 0 after
i = 0 j = 1 before
i = 0 j = 1 after
i = 0 j = 2 before
finish
Continue
Inner
@Test
public void manyInnerContinue() {
out:
for (int i = 0; i < 5; i++) {
inner:
for (int j = 0; j < 5; j++) {
System.out.println("i = "+ i + " j = " + j +" before");
if (j == 2){
continue inner;
}
System.out.println("i = "+ i + " j = " + j + " after");
}
}
System.out.println("finish");
}
i = 0 j = 0 before
i = 0 j = 0 after
i = 0 j = 1 before
i = 0 j = 1 after
**i = 0 j = 2 before**
i = 0 j = 3 before
i = 0 j = 3 after
i = 0 j = 4 before
i = 0 j = 4 after
i = 1 j = 0 before
i = 1 j = 0 after
i = 1 j = 1 before
i = 1 j = 1 after
**i = 1 j = 2 before**
i = 1 j = 3 before
i = 1 j = 3 after
i = 1 j = 4 before
i = 1 j = 4 after
i = 2 j = 0 before
i = 2 j = 0 after
i = 2 j = 1 before
i = 2 j = 1 after
**i = 2 j = 2 before**
i = 2 j = 3 before
i = 2 j = 3 after
i = 2 j = 4 before
i = 2 j = 4 after
i = 3 j = 0 before
i = 3 j = 0 after
i = 3 j = 1 before
i = 3 j = 1 after
**i = 3 j = 2 before**
i = 3 j = 3 before
i = 3 j = 3 after
i = 3 j = 4 before
i = 3 j = 4 after
i = 4 j = 0 before
i = 4 j = 0 after
i = 4 j = 1 before
i = 4 j = 1 after
**i = 4 j = 2 before**
i = 4 j = 3 before
i = 4 j = 3 after
i = 4 j = 4 before
i = 4 j = 4 after
finish
Out
@Test
public void manyOutContinue() {
out:
for (int i = 0; i < 5; i++) {
inner:
for (int j = 0; j < 5; j++) {
System.out.println("i = "+ i + " j = " + j +" before");
if (j == 2){
continue out;
}
System.out.println("i = "+ i + " j = " + j + " after");
}
}
System.out.println("finish");
}
i = 0 j = 0 before
i = 0 j = 0 after
i = 0 j = 1 before
i = 0 j = 1 after
**i = 0 j = 2 before**
i = 1 j = 0 before
i = 1 j = 0 after
i = 1 j = 1 before
i = 1 j = 1 after
**i = 1 j = 2 before**
i = 2 j = 0 before
i = 2 j = 0 after
i = 2 j = 1 before
i = 2 j = 1 after
**i = 2 j = 2 before**
i = 3 j = 0 before
i = 3 j = 0 after
i = 3 j = 1 before
i = 3 j = 1 after
**i = 3 j = 2 before**
i = 4 j = 0 before
i = 4 j = 0 after
i = 4 j = 1 before
i = 4 j = 1 after
**i = 4 j = 2 before**
finish