return:返回值,退出当前方法(void有隐式return)
break:退出循环,只能中断一个循环
continue:停止当前迭代,退回循环起始处,开始下一次迭代
goto:是保留字,但并未使用
switch 只能将 int 或 char 等整数类型作为选择因子,对于非整数类型必须使用一系列if语句,可以有enum来协调switch。case后是直接跟选择因子的,然后才是冒号。
label: 标签,用于迭代语句之前。用法如下
label1: outer-iteration{ inner-iteration{ // break; //(1)中断内部迭代回到外部迭代 // continue; //(2)返回内部迭代起始处 // continue lable1; //(3)同时中断内外,返回外部迭代,开始外部迭代 // break lable1; //(4)同时中断内外,返回label1但不重新进入迭代 } }
详细例子如下:
import static net.mindview.util.Print.*; public class LabeledFor { public static void main(String[] args) { // TODO Auto-generated method stub int i=0; outer: for(;true;) { inner: for(;i<10;i++) { //i没在这里初始化 print("i="+i); if(i==2) { print("continue"); continue; } if(i==3) { print("break"); i++;//跳过递增,所以要对i递增 break; } if(i==7) { print("continue outer"); i++; continue outer; } if(i==8) { print("break outer"); break outer;//后面不再循环 } for(int k=0;k<5;k++) { if(k==3) { print("continue inner"); continue inner; } } } } } }
i=0
continue inner
i=1
continue inner
i=2
continue
i=3
break
i=4
continue inner
i=5
continue inner
i=6
continue inner
i=7
continue outer
i=8
break outer
总结:
1)一般continue会退回内层循环开头并继续执行
2)带标签continue会回到标签位置并重新进入跟在标签后的循环
3)一般break会中断并跳出当前循环
4)带标签break会中断并跳出标签所指的循环