天天看点

java自我学习第四章流程控制流程控制

流程控制

不论哪一种编程语言,都会提供两种基本的流程控制结构:分支结构和循环结构。其中分支结构用于实现根据条件来选择性地执行某段代码,循环结构则用于实现根据循环条件重复执行某段代码。

顺序结构

任何编程语言中最常见的程序结构就是顺序结构。顺序结构就是程序从上到下逐行地执行,中间没有任何判断和跳转。如果main方法的多行代码之间没有任何流程控制,则程序总是从上向下依次执行,排在前面的代码先执行,排在后面的代码后执行。

public static void main(String[] args){

    //顺序执行,根据编写的顺序,从上到下运行

    System.out.println(1);

    System.out.println(2);

    System.out.println(3);

}

分支结构:if语句第一种格式

if语句第一种格式:

if(条件表达式){

       语句体

}

执行流程

  • 首先判断条件表达式看其结果是true还是false
  • 如果是true就执行语句体
  • 如果是false就不执行语句体
java自我学习第四章流程控制流程控制

分支结构:if语句第二种格式

if语句第二种格式: if...else

if(关系表达式) { 

      语句体1;

}else {

      语句体2;

}

执行流程

  • 首先判断关系表达式看其结果是true还是false
  • 如果是true就执行语句体1
  • 如果是false就执行语句体2
java自我学习第四章流程控制流程控制

分支结构:if语句第三种格式

if语句第三种格式: if...else if ...else

if (判断条件1) {

      执行语句1;

} else if (判断条件2) {

      执行语句2;

}

...

}else if (判断条件n) {

     执行语句n;

} else {

      执行语句n+1;

}

执行流程

  • 首先判断关系表达式1看其结果是true还是false
  • 如果是true就执行语句体1,然后结束当前多分支
  • 如果是false就继续判断关系表达式2看其结果是true还是false
  • 如果是true就执行语句体2,然后结束当前多分支
  • 如果是false就继续判断关系表达式…看其结果是true还是false
  • 如果没有任何关系表达式为true,就执行语句体n+1,然后结束当前多分支。
java自我学习第四章流程控制流程控制

分支结构:if..else嵌套

在if的语句块中,或者是在else语句块中, 又包含了另外一个条件判断(可以是单分支、双分支、多分支)

执行的特点: (1)如果是嵌套在if语句块中的 只有当外部的if条件满足,才会去判断内部的条件

                      (2)如果是嵌套在else语句块中的 只有当外部的if条件不满足,进入else后,才会去判断内部的条件

分支结构:switch选择结构

语法格式:

switch(表达式){

    case 常量值1:

        语句块1;

        【break;】

    case 常量值2:

        语句块2;

        【break;】   

    。。。

   【default:

        语句块n+1;

        【break;】

     】

}

执行过程:

(1)入口

①当switch(表达式)的值与case后面的某个常量值匹配,就从这个case进入;

②当switch(表达式)的值与case后面的所有常量值都不匹配,寻找default分支进入;不管default在哪里

(2)一旦从“入口”进入switch,就会顺序往下执行,直到遇到“出口”,即可能发生贯穿

(3)出口

①自然出口:遇到了switch的结束}

②中断出口:遇到了break等

注意:

(1)switch(表达式)的值的类型,只能是:4种基本数据类型(byte,short,int,char),两种引用数据类型(JDK1.5之后枚举、JDK1.7之后String)

(2)case后面必须是常量值,而且不能重复

case的穿透性

在switch语句中,如果case的后面不写break,将出现穿透现象,也就是一旦匹配成功,不会在判断下一个case的值,直接向后运行,直到遇到break或者整个switch语句结束,switch语句执行终止。