第4章-控制执行流程
Think in java 读书笔记
pikzas
2019.03.06
第4章-控制执行流程
知识点
while do-while和for
while循环中会先去查询判断条件,如果为false,则直接退出循环,一次也不执行。
do-while循环会先执行一遍循环体内的代码,然后查询判断条件,如果为false,才会退出循环。
for(initialization;boolean-expression;step)
- initialization 只会执行一次
- 然后依据boolean-expression判定 结果为true 进入循环,false 跳出循环
- 执行statement
- 执行step
- 重复第二步
for循环中的逗号操作符 可以在初始化的时候,同时初始化多同类型的变量
class Demo{
public static void test1() {
System.out.println("--test1--");
for (int i = 1 , j = i +5 ; (i < 5 && j < 8) ; i++ , j =i *2) {
System.out.println("i = "+i+", j = "+j);
}
}
}
//output
//i = 1, j = 6
//i = 2, j = 4
//i = 3, j = 6
foreach 只能运用在数组或者是实现了Iterable接口的对象上
break退出当前包括之后所有的循环;continue仅仅是跳过当前循环,之后该咋循环还是咋循环
while(true) for(;true;)是等价的。
标签 (lable:) 用于多层的循环嵌套中,类似于goto关键字
- 一般的continue是跳出所在循环的当次操作
- 带标签的continue是跳出这个标签后面紧接着的循环的当次操作
- 一般的break是结束所在循环的之后所有操作,以及当次操作break之后的代码都不会执行
- 带标签的break是结束标签后紧接着的那个循环的所有后续操作
class Demo{
public static void main(String[] args){
int i = 0;
outer:
for(;;){
inner:
for(;i<10;i++){
System.out.println("i = "+i);
if(i==2){
System.out.println("continue");
continue ;
}
if(i==3){
System.out.println("break");
i++;
break;
}
if(i==7){
System.out.println("continue outer");
i++;
continue outer;
}
if(i==8){
System.out.println("break outer");
break outer;;
}
for (int k = 0;k < 5;k++ ) {
if(k==3){
System.out.println("continue inner");
continue inner;
}
}
}
}
}
}
//output
//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
switch(indicator) case:statement;break;
indicator 只能是byte char short int string 和枚举,不能是boolean long float double;
而且看下面的例子也是可以成功运行的
不加break 注意case 穿透。
class Demo{
public static void main(String[] args){
byte i = 0b10;
switch (i){
case 2:
System.out.println(1111);
break;
case 0b11:
System.out.println(2222);
break;
default:
System.out.println("xxxxx");
}
}
}
class Demo{
public static void main(String[] args){
short i = 126;
switch (i){
case (char)23:
System.out.println(1111);
break;
case 0b1111110:
System.out.println(2222);
break;
default:
System.out.println("xxxxx");
}
}
}
言之有物