引言

在编程语言中,用于控制程序执行顺序,流程控制是逻辑的体现,通过流程控制可以组织多条语句。

表达式: 由运算符和操作数组成的式子(赋值表达式,布尔表达式,算数表达式……..)
语句: 就是编程语言的一句话,以分号 ; 结尾 。
流程控制:有多个语句组成的一段代码。
语句块: { }

在编程语言中,通常有哪些流程控制呢?

顺序 选择 循环 goto跳转(java不支持,严重影响代码的可读性,很多语言都摒弃了他,但是Java依然保留了这个关键字)。

1.顺序结构

1.1概念

顺序流程控制,是一种代码执行的默认顺序,依据代码的编写顺序从上到下,从外到内依次执行。
2.流程控制 - 图3

  1. public static void main(String[] agrs){
  2. System.out.println("setp1:打开冰箱门");
  3. System.out.println("setp2:大象放冰箱");
  4. System.out.println("setp3:关闭冰箱门");
  5. }

2.选择结构

2.1单分支IF

2.1.1 语法

  1. if( condition ){
  2. 需要执行的语句;
  3. }
  4. // 后续代码

condition 条件表达式 = > boolean 满足执行,不满足不执行

2.1.2 流程图

2.流程控制 - 图4

2.1.3 示例代码

  1. public static void main(String[] args){
  2. //大象的体积
  3. int v = 12;
  4. //最大容量
  5. int max = 10;
  6. if( v < max ){
  7. System.out.println("大象放进冰箱");
  8. }
  9. }

2.2双分支IF

2.2.1语法

  1. if( condition ){
  2. 需要执行的语句;
  3. }else{
  4. 条件不满足执行的语句;
  5. }

2.2.2流程图

image.png

2.2.3示例代码

  1. public static void main(String[] args){
  2. int v = 12;
  3. int max = 10;
  4. if( v <= max ){
  5. System.out.println("ok,可以放进去");
  6. }else{
  7. System.out.println("大象放不下哦");
  8. }
  9. }

2.3 多分支

2.3.1语法

  1. if( condition1 ){
  2. 条件1满足 执行的语句;
  3. }else if( condition2 ){
  4. 条件2满足 执行的语句
  5. }else if( condition3 ){
  6. 条件N满足 执行的语句
  7. }else{
  8. 所以条件不满足执行的语句
  9. }

2.3.2流程图

2.流程控制 - 图6

2.3.3示例

  1. public static void main(String[] args){
  2. int level = 5;
  3. if( level <=3 ){
  4. System.out.println("青铜");
  5. }else if( level <= 6 ){
  6. System.out.println("白银");
  7. }else if( level <= 9 ){
  8. System.out.println("黄金");
  9. }else if( level <= 12 ){
  10. System.out.println("铂金");
  11. }else{
  12. System.out.println("最强王者");
  13. }
  14. }

总结: IF 有3种写法 , 单分支 if(){ } 只关心满足条件的情况
双分支 if(){} else{ } 关心逻辑的两面性,满足做什么,不满足又做什么
多分支 if(){} else if() 区间判断,多情况判断,且这些情况都是 是连续的。

2.4 switch 分支

2.4.1 语法

  1. switch( value ){
  2. case 1 : 语句;
  3. case 2 : 语句;
  4. case N : 语句;
  5. break;
  6. default: 语句;
  7. }

细节 : switch 支持的数据类型 char, byte, short, int Character Byte Short Integer String(jdk1.7) enum 10种数据类型

如果 case 缺少 break 则发生 case “穿透” 不在判断后续case 值之间执行对于语句 直到 找到break;

2.4.2 流程图

yuque_diagram (2).jpg

2.4.3 示例代码

  1. public static void main(String[] args){
  2. int num = 1;
  3. switch( num ){
  4. case 5 : System.out.println("亚索");
  5. break;
  6. case 2 : System.out.println("安琪拉");
  7. break;
  8. case 3 : System.out.println("王昭君");
  9. break;
  10. case 4 : System.out.println("黄忠");
  11. break;
  12. default: System.out.println("啥玩意?");
  13. }
  14. }

3.循环结构

重复做事情,重复执行某些代码。一般通过三个要素实现控制,1计数器2循环条件2计数器变化

3.1 For 循环

3.1.1 语法

  1. for( 初始化 ; 条件 ; 递增 ){
  2. 需要执行的语句;
  3. }

3.1.2流程图

2.流程控制 - 图8

3.1.3 示例

  1. public static void main(String[] args){
  2. for(int i = 0; i < 100; i++){
  3. System.out.println(" Good Boy !");
  4. }
  5. }

3.2 while 循环

3.2.1语法

  1. while( condition ){
  2. 执行的语句;
  3. }

3.2.2流程图

2.流程控制 - 图9

3.2.3示例代码

  1. public static void main(String[] args){
  2. int i = 0;
  3. while(i<10){
  4. System.out.println( "hello boy" );
  5. i++;
  6. }
  7. }

3.3 do-while 循环

3.3.1 语法

  1. do{
  2. 循环体;
  3. }while( condition );

3.3.2 流程图

image.png

3.3.3 示例代码

  1. public static void main(String[] args){
  2. int i = 0;
  3. do{
  4. System.out.println( "hello boy" );
  5. i++;
  6. }while( i<10 );
  7. }

3.4 break 与continue

break 和 continue 的作用是控制循环的节奏,当然break 也可以在 switch中使用,作用是结束switch。

  • break: 立即终止本层循环
  • continue; 跳过本次循环,快速进入下一次循环 ```java public static void main(String[] args) {
  1. for (int age = 0; age <= 100 ; age++ ){
  2. if( age == 50 ){
  3. break;
  4. }
  5. System.out.println("小杨今年"+age+"岁了");
  6. }
  7. System.out.println("呵呵");
  8. }
  1. ```java
  2. public static void main(String[] args) {
  3. for (int age = 0; age <= 100 ; age++ ){
  4. if( age == 50 ){
  5. continue;
  6. }
  7. System.out.println("小明今年"+age+"岁了");
  8. }
  9. System.out.println("哈哈");
  10. }

总结:
for 关注基本明确次数的循环。
while循环通常是关注哪些不太确定次数的循环。
do-while 至少执行一次的循环

break 可以自定义停 比如 a:{

{
}
break a;
}
嵌套循环:for 外层控制行数 内层控制列数

巩固:

2.流程控制 - 图11