流程中断:continue、break 、 label
continue、 break
- 这两个关键字必须与循环语句或者switch语句合用;
- 这两个关键字只能出现在循环体或者switch语句中。
- break;语句的作用是:退出循环语句,也就是说不再进行循环,直接开始执行循环语句之后的语句。
- continue;语句的的作用:跳过本次循环中的剩下的语句,进入下一次循环。
label:
- label这个单词不是JAVA的关键字,只是Java的一个术语,意思是给某个循环语句打个标签,以后遇到这个标签,就是相当于其指代的循环语句。
- 标签名的规则参考方法的命名规则?可以给循环语句随便起标签名,比如a,b,c,x等。
- 标签名只能定义在循环语句前,一般定义在嵌套循环的外层循环语句前,可以与循环语句同行,也可以定义在循环语句的上一行。格式如:
labelx:for(...){...}
- 标签只能用在其所指代的循环语句的循环体中。并且只能同break\continue两个关键字合用
- break labelx;语句的作用:直接退出labelx指代的循环语句,开始执行循环语句之后的语句。
- continue lablex;语句的作用:直接进入labelx指代的循环语句的下一次循环。
labelx:格式如下:
outer:
for(...){
for(...){
...
break outer; // 此处语义是,直接退出outer所指代的外层循环的执行,会直接开始执行下边的语句:out.println("循环结束了");
...
}
}
out.println("循环结束了");
outer:
for(int i=0;i<3;i++){
out.println("outer:"+i);
inner:
for(int j=0;j<5;j++){
if(j==3){
continue outer; // 直接跳到外层for循环,执行外层for循环的下一次循环,即执行i++语句,然后执行条件判断语句:i<3;
}
out.println("inner:"+j);
}
while / do while 循环
…
确定循环:for循环
- for循环语句是有确定循环次数的,因此称为确定循环。
- for循环语句用每次迭代后更新的计数器或者变量的方式来控制循环次数。
- for 语句内定义的变量,其作用域仅在for循环语句和循环体内部。
也就是说,如果在一个代码块内定义了两个非嵌套的for循环,则这两个for循环语句或者循环体内可以定义名称相同的变量。
格式:for ( 语句1; 条件语句; 语句3 ) { // 循环体…}
执行步骤如下:
- 先执行语句1,
- 然后执行条件语句,进行判断,如果条件成立,则执行花括号{}内的循环体…;否则退出for循环
- 然后执行语句3
- 然后执行条件语句,进行判断,如果条件成立,则执行花括号{}内的循环体…;否则退出for循环
- 接下来就是循环执行 3、4两个步
多重选择:switch语句
switch语句用于部分替代多个if-else的情况。
switch(x) 内的 x 的数据类型可以是以下5种:byte \ short \ char \ int \ String(JRE7)
格式:
Scanner scanner = new Scanner(System.in);
out.println("请输入每种水果前的序号,来选择您喜欢的水果:1 苹果 2 香蕉 3 梨 4 其它");
int choice = scanner.nextInt();
String tips = null;
switch(choice){
case 1:
tips="苹果";
break;
case 2:
tips="香蕉";
break;
case 3:
tips="梨";
break;
case 4:
tips="其它";
break;
default:
tips=null;
break;
}
if(Objects.isNull(tips)){
out.println("您输入的序号不在给定的范围内");
}else {
out.println("您选择的是:"+tips);
}
break与case穿透
case穿透:如果case x成立,那么就会开始执行此case后的所有语句,直到遇到第一个break;语句才停止执行。即便从case x到遇到的第一个break;语句之间还有其它case语句,如 case y:…;case z:…;都不会再做是否匹配的判断,而是直接执行case y:…;case z:…;内的语句,这种情况称为case穿透。因此一定要记得在每一个case的执行体的最后一行加上break语句,谨防case穿透,