ZB-009-java控制流

方法的控制流

  • 方法调用,就是一个方法栈每当开始一个方法调用的时候就在方法栈上面落上一个方法块(栈帧),方法调用结束的时候销毁栈帧,控制权交给上一个方法。然后循环往复

while和 do while

死循环

1
2
3
while(true){

}

do while

1
2
3
4
5
6
7
8
9
10
11
12
int i = 0;
while(i <100){
i+=1;
}



int j =0;
do{
System.out.println(i)
j++;
}while(j>0);

for 和 foreach循环

  • for循环
1
2
3
for(int i=0;i<100;i++){
System.out.println(i);
}
  • foreach循环(不是java独有的)
    1
    2
    3
    4
    // 冒号后面的对象必须实现了  Iterable 接口
    for(String e:Iterable<String>){
    System.out.println(e);
    }

foreach

1
2
3
4
List<String> list = Arrays.asList("1","2");
for(String e:list){
System.out.println(e);
}

break 和 continue

  • break 立刻结束包裹当前 break 的第一层循环
  • continue 跳过包裹当前 continue 的第一层循环中的语句,继续下一次循环
  • break label;

远古黑魔法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public static void main(String[] args){
int i = 0;
// 这样写是声明了一个 label
http://google.com
i++; // label后面必须有一个语句 否则报错
}

~~~~~~~~~~~~~~~~~~~~~~~~~~
// 另一种用法
最外层循环:
for(int i=0;i<100;i++){
for(int j=0;j<100;j++){
break 最外层循环;
}
}

goto 上古时代控制程序流程的方式

  • java保留字,不能使用的关键字
1
2
3
4
5
6
// 其他语言 如 C
label:
if(i<100){
i++;
goto label;
}

switch

在java中只有三种东西可 switch

  • int/long/char/byte/short
  • enum
  • String(JDK7 2011年)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
int i = new Random().nextInt(5);
switch(i){
case 0:
xxx;
break;
case 1:
xxx;
break;
case 2:
xxx;
break;
case 3:
xxx;
break;
case 4:
xxx;
break;
default:
xxx;
}

switch 可以贯穿

swich的作用域

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
int i = new Random().nextInt(5);
switch(i){
case 0:
case 1:
case 2:{
String s = "A";
break;
}
case 3:{
String s = "A";
break;
}
default:
xxx;
}