流程控制

  • 引入
  • 流程控制的作用:
  • 控制语句分类:
  • 流程控制的流程:
  • 分支结构
  • IF()
  • IF()...Else
  • IF()...Elese IF()
  • Switch()分支结构
  • 循环结构
  • While()
  • do...While()
  • For
  • 增强For
  • 死循环
  • 循环的分类
  • 关键字
  • break
  • continue
  • return


引入

流程控制的作用:

流程控制语句是用来控制程序中可语句执行顺序的语句,可以把语句组合成能完成一定功能的小逻辑块

控制语句分类:

控制语句分为三类:顺序,选择和循环

顺序结构代表"先执行a,在执行b"的逻辑

条件判断结构代表"如果…,则…"的逻辑

循环结构代表"如果…则再继续…"的逻辑

三种流程控制语句就能表示所有的事情!这三种基本逻辑结构是相互支撑的,他们共同构成了算法的基本结构,无论怎样复杂的逻辑结构,都可以通过他们来表达.所以任何一种高级语言都具备上述两种结构.

流程控制的流程:

java开发的控制器 java程序控制_布尔表达式

分支结构

IF()

if(布尔表达式){

语句块;

}

if语句对布尔表达式进行一次判定,若判定为真,则执行{}中的语句块,否则跳过该语句块.流程图如图所示:

java开发的控制器 java程序控制_循环结构_02

if后面的()中的条件,要按照自己需求尽量完善

{}可以省略不写,但是一旦省略,这个if就只负责后面一句话,所以我们不建议初学者省略

IF()…Else

if(布尔表达式){

语句块1;

}else{

语句块2;

}

当布尔表达式为真时,执行语句块1,否则,执行语句块2.也就是else部分.流程图如图所示:

java开发的控制器 java程序控制_分支结构_03


if-else双分支可以用条件运算符进行替换

IF()…Elese IF()

if(布尔表达式1){

语句块1;

}else if(布尔表达式2){

语句块2;

}else{

语句块n+1;

}

【1】当布尔表达式1为真时,执行语句块1;否则判断布尔表达式2,当布尔表达式2为真时,执行语句块2;否则执行布尔表达式3…;如果1~n个布尔表达式均判定为假时,则执行语句块n+1,也就是else部分,流程图如图所示:

java开发的控制器 java程序控制_分支结构_04

【2】else:隐藏了一个条件,跟上面分支条件表达式相反的功能

【3】多分支:好处:只要满足一个分支以后,后面的分支就不需要再判断了—>效率高

【4】我们写代码的时候尽量保证else的存在—>else相当于"保底""备胎"的作用,别的分支都不走就会走这个分支

Switch()分支结构

【1】Switch分支结构(多值情况)

语法结构

switch(表达式){

case 值1:

语句序列1; break;

case 值2:

语句序列2; break;

default:默认语句;

}

switch语句会根据表达式的值从相匹配的case标签开始执行,一直执行到break语句处或者switch语句的末尾,如果表达式的值与任一case值不匹配,则进入default语句(如果default语句存在的情况).根据表达式值的不同执行许多种不同操作.switch语句中case标签在JDK1.5之前必须是整数(long类型除外)或者枚举,不能是字符串,在JDK1.7之后允许使用字符串(String).大家要注意,当布尔表达式是等值判断的情况,可以使用if-elseif-else多分支结构或者switch结构,如果布尔表达式区间判断情况,则只能使用if -else if-else多分支结构.switch多分支结构的路程图如图所示:

java开发的控制器 java程序控制_java 控制器  增_05

switch后面是一个(),()中表达式返回一个结果是一个等值,这个等值的类型可以为:

int,byte,short,char,String,枚举类型

这个()中的等值会依次跟case后面的值进行比较,如果匹配成功,就执行:后面的代码

为了防止代码的"穿透"效果:在每个分支后面加个关键词break,遇到break这个分支就结束了;

类似esle的"保底""备胎"的分支:default分支

default分支可以写在任意的位置上,但是如果没有在最后一行,后面必须加上break关键字,如果在最后一行的话,break就可以省略

相邻分支逻辑是一样的,那么就可以只保留最后一个分支,上面的都可以省略不写了

总结:

switch分支和if分支区别:

表达式是等值判断的话—>if,switch都可以

如果表达式是区间判断的情况—>if最好

switch应用场合:就是等值判断,等值的情况比较少的情况下

循环结构

While()

while(布尔表达式){

循环体;

}

在循环刚开始时,会计算一次"布尔表达式"的值,若条件为真,执行循环体,而对于后来每一次循环,都会在开始前重新计算一次

语句中应有使循环趋向于结束的语句,否则会出现死循环

while循环流程图如图所示:

java开发的控制器 java程序控制_布尔表达式_06

do…While()

do{

循环体;

}while(布尔表达式);

do-while循环结构会先执行循环体,然后再判断布尔表达式的值,若条件为真,执行循环体,当条件为假时结束循环,do-while循环的循环体至少执行一次,dowhile循环体结构流程图如图所示:

java开发的控制器 java程序控制_循环结构_07

一定要注意写while后面的分号,否则编译出错;

while和do-while的区别:

while:先判断,再执行

do-while:先执行,再判断—>至少被执行一次,从第二次开始才进行判断

【2】什么场合使用do-while:

先执行才能判断的时候

For

for(初始表达式;布尔表达式;迭代因子){

循环体;

}

for循环语句是支持迭代的一种通用结构,是最有效,最灵活的循环结构,for循环在第一次反复之前要进行初始化,即执行初始化表达式;随后,对布尔表达式进行判定,若判定结果为true,则执行循环体,否则,终止循环;最后在每一次反复的时候,进行某种形式的"步进",即执行迭代因子.

1.粗实话部分设置循环变量的初始值

2.条件判断部分为任意布尔表达式

3.迭代因子控制循环变量的增减

for循环在执行条件判定后,先执行循环体部分,在执行步进.

for循环结构的流程图如图所示:

java开发的控制器 java程序控制_布尔表达式_08

增强For

for(表达式1:表达式2){

循环体;

}

表达式1:与数据或集合类型相同的变量

表达式2:数组或集合类型

例:

int number[]=new int[]{10,20,30,40,50};

for(int x:number){

 Systyem.out.println("循环"+x);

}

死循环

死循环有while,do…while,for三种方法

while(ture){
	//代码块;
}

do{
	//代码块;
}while(true);

for(;;){
	//代码块;
}

循环的分类

循环分为两大类:
第一类是当型:while(){};for(;😉{}

当型循环结构用在先判断某些条件是否为真,然后重复执行某一段代码的情况下。
当型循环的条件是在循环体执行前进行判断的 当条件满足时进入循环,否则结束循环.
当型循环也叫“前测试型”循环。

第二类是直到型:do{}while();

直到型循环结构是先在执行了一次循环体之后,再对控制条件进行判断,当条件不满足时执行循环体,满足时则停止。

关键字

在循环语句的主体部分,均可用break控制循环的流程.break用于强行退出循环,不执行循环体中剩余的语句.

continue语句用在循环体语句中,用于终止某次循环过程,即跳过循环体中尚未执行的语句,接着执行下一次是否执行循环的判定.

return的作用,结束当前所在方法的执行.

break

【1】通过练习感受break的作用:停止最近的循环

【2】break带标签使用:

java开发的控制器 java程序控制_算法_09


多层循环也可使用标签,按照自己的需求去写即可;

continue

【1】停止本次最近循环,继续下一次循环

【2】contiune带标签使用:

java开发的控制器 java程序控制_分支结构_10

return

【1】遇到return结束当前正在执行的方法