3、程序流程控制

3.1、结构化程序有三种结构

3.1.1、顺序结构

程序从上到下一行一行的执行代码,没有判断和中转

3.1.2、选择结构(分支结构)

这里写图片描述

3.1.2.1、switch语句

语法:

    switch(表达式){
    case 取值1: 语句块1;
    break;
    case 取值n: 语句块n;
    break;
    default: 语句块n+1;
    break;
    }

switch与if嵌套:

  switch(表达式){
    case 取值n: 语句块n;
    if(表达式){…}
    break;
    default: 语句块n+1;
    break;
    }

switch语句有关规则:

表达式的返回值必须是下述几种类型之一:int, byte, char, short,确定的结果,jdk1.7后支持String

case子句中的取值必须是常量,且所有case子句中的取值应是不同的

default子句是可选的

break语句用来在执行完一个case分支后使程序跳出switch语句块;如果case后面没有写break则直接往下面执行

扫描二维码关注公众号,回复: 3716302 查看本文章

case后面的执行体可写{ }也可以不写{ }

Java 7 switch支持String的实现原理:

这个新特性是在编译器这个层次上实现的在编译的过程中,编译器会根据源代码的含义进行转换,不同的Java编译器可能采用不同的方式来转换

比如:如果switch语句中只包含一个case语句,那么就可以简单的将其转换成一个if语句。

如果包含一个case和一个default语句,就可以转换成if-else语句。而对于复杂的情况(多个case语句),也可以转换成Java 7之前的switch语句,只不过使用字符串的哈希值(整数)作为switch语句表达式的值

3.1.2.2、if与switch的区别

语法不同:

语句后表达式值的类型不同:

if语句表达式值的类型是boolean,switch分支表达式值的类型是byte,short,char,int,枚举,String

适用场景不同:

if:变量的值在某个区间之内

switch:变量的值是某个定值

3.1.2.3、if与三目运算区别

三目运算符都可以使用if语句实现,反之不成立

3.1.3、循环结构

3.1.3.1、有两种结构:当型和直到型

当型结构:

这里写图片描述

直到型:

这里写图片描述

3.1.3.2、循环语句功能

在循环条件满足的情况下,反复执行特定代码

3.1.3.3、环语句的四个组成部分

初始化部分:对循环变量赋初值

循环条件部分:判断循环变量是否超出某个界限

循环体部分:要循环执行的具体逻辑

迭代部分:修改循环变量的值

3.1.3.4、循环语句分类

for循环:

形式:

for(初始化部分;判断条件部分;迭代表达式){循环体}

执行过程:

首先计算表达式1,接着计算表达式2,若表达式2的值=true,则执行循环体,接着执行表达式3,再判断表达式2的值,依次重复下去,直到表达式2的值=false

流程:
这里写图片描述

for语句的几种特例:

1) 表达式2一般不可省略,否则为无限循环

例:for(int i =1;;i++){sum = sum+1}

相当于条件永真、永不为false,若用while表示,相当于

int i=1while(true){
sum = sum + i;
i++;
}

2) 表达式3亦可省略,但在循环体中必须有语句修改循环变量;以使表达式2在某一时刻为false而正常结束循环。

例:for(int sum =0,i=1;i<=100;){
sum = sum + i;
i++;
}

3) 若同时省略表达式1,表达式3,则相当于while(表达式2)语句。

int sum ,i
for(;i<=100;){sum+=i;i++;}
相当于
while(i<=100){
sum+=i;
i++;
}

4) 三个表达式均省略即for(;;)语句,此时相当于while(true)语句

5) 表达式1、表达式3可以是逗号表达式,以使循环变量值在修改时可以对其它变量赋值

例:for(int sum =0,i=1;i<=100;i=i+2)

等价于:

int sum = 0;
for(int i =1;i<=100;i=i+2)

while循环

while语句(“当”型循环)

形式:

while(boolean表达式){语句块}

执行过程:
先判断表达式的值,若为true,则执行其后面的语句,然后再次判断条件并反复执行,直到条件不成立为止

do/while循环

一种专门的“直到型”循环语句

形式:

do{语句块}while(表达式);

执行过程:
先执行语句,再判断表达式的值,若为true再执行语句,否则结束循环

流程:
这里写图片描述

多重循环

多重循环指的是循环之间的相互嵌套,被嵌套的称为内循环,嵌套内循环的称为外循环,循环可以多重循环

while语句与do/while语句的区别

当第一次执行时,若表达式=false时,则while语句与do/while有所不同,do/while执行一次后面的语句,而while不执行

几种循环的比较

对于同一个问题,三种循环可相互替代

for循环功能强于while,do…while但若不是明显地给出循环变量初终值(或修改条件),则可以用while或do…while以增强程序的结构化和可读性

要防止无限循环—–死循环

3.2、特殊流程控制语句

break语句:

break语句用于终止某个语句块的执行

语法:

{
......
break;
......
}

break语句出现在多层嵌套的语句块中时,可以通过标签指明要终止的是那一层语句块

语法:

label1:while(){
label2:for(){
label3:while(){
break  label1;
        }
    }
}

continue语句:

continue语句用于跳过某个循环语句块的一次执行

continue语句出现在多层嵌套的循环语句体中时,可以通过标签指明要跳过的是哪一层循环。用法同break

猜你喜欢

转载自blog.csdn.net/qq_28797347/article/details/79755193