看到一道这样的java的选择题, 代码如下
1 public static void main(String[] args) { 2 int k = 10; 3 for (int i = 0; i < 10; i++) { 4 start: 5 System.out.print("s"); 6 if (i > 5) break; 7 else System.out.print("g"); 8 while(k > 0) { 9 System.out.print("t");k--; 10 if (i > 3) 11 break start; 12 } 13 } 14 }
给出代码输出.
上述这道题考察了java的break和continue的标签使用.
上述的代码是错误的, 会在编译期报错, java的label只可以用在迭代语句之前, 而且是刚好之前, 不可以插入任何语句, label只是用来控制嵌套迭代
java编程思想中的介绍
label1:
outter-iteration {
inner-iteration {
break; // 中断内部迭代, 回到外部迭代
continue; // 回到内部迭代的起始处
continue label1; // 中断内部外部迭代, 跳转到label1处, 继续迭代过程, 从外部迭代开始
break label1; // 中断所有迭代, 回到label1处, 不会重新进入迭代
}
}
下面写两个简单的例子
continue的例子
1 public static void main(String[] args) { 2 outter:for (int i = 0; i < 2; i++) { 3 System.out.println("i = " + i); 4 for (int j = 0; j < 5; j++) { 5 if (j > 3) { 6 System.out.println("continue outter"); 7 continue outter; 8 } 9 System.out.println("j = " + j); 10 } 11 } 12 }
输出结果为
i = 0 j = 0 j = 1 j = 2 j = 3 continue outter i = 1 j = 0 j = 1 j = 2 j = 3 continue outter
break的例子
1 public static void main(String[] args) { 2 outter:for (int i = 0; i < 2; i++) { 3 System.out.println("i = " + i); 4 for (int j = 0; j < 5; j++) { 5 if (j > 3) { 6 System.out.println("break outter"); 7 break outter; 8 } 9 System.out.println("j = " + j); 10 } 11 } 12 }
输出结果为
i = 0 j = 0 j = 1 j = 2 j = 3 break outter
我们可以看到, break label之后就不会再执行外部迭代了.
参考:
- java中的标签: http://blog.sina.com.cn/s/blog_7d528cb70100qecf.html
- Java中带标签的break的用法: http://blog.csdn.net/moonwalkings/article/details/4631988
- <Java编程思想>