方法的控制流
- 每当开启一个新的方法都会启动一个新的环境叫做stack frame
- 栈是严格的上下方法
- 方法栈
- 脑补程序允许的逻辑
站在全局的角度看java发生了什么
while与do-while循环
while (返回boolean的语句) {
....
}
do {
...
} {
返回boolean的语句
}
public class Main {
public static void main(String[] args) {
int i = 0;
while (i < 10) {
System.out.println(i);
i += 1;
}
do {
System.out.println(i);
} while (i > 0);
}
}
step over 和step into的区别
- step over执行当前行语句,无论当前行语句多么复杂
- step into 会以最详细的方式进行当前行的语句
两种for循环
- for...i
- for each,这种需要实现iterable接口 18px
break与continue
package com.github.hcsp.controlflow;
import java.util.Arrays;
import java.util.List;
public class Main {
public static void printOdd(List<Integer> list) {
for (int i = 0;
i < list.size();
i++) {
if(list.get(i)%2 == 0) {
continue;
}
System.out.println(list.get(i));
}
}
public static void main(String[] args) {
printOdd(Arrays.asList(1,4,2,56,-1,3,12));
}
}
break label
- break label 的用法,直接跳出到最外层的循环
package com.github.hcsp.controlflow;
public class Main {
public static void main(String[] args) {
最外层的循环:
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 2; j++) {
break 最外层的循环;
}
}
}
}
switch语句
- 可以switch哪些东西
- int/long/char/byte/short
- enum 枚举
- String (JDK7+)
- switch case
package com.github.hcsp.controlflow;
import java.util.Random;
public class Main {
public static void main(String[] args) {
int i = new Random().nextInt(5);
switch(i) {
case 0:
System.out.println(i);
break;
case 1:
System.out.println(i);
break;
case 2:
System.out.println(i);
break;
case 3:
System.out.println(i);
break;
default:
System.out.println(i);
break;
}
}
}