感谢尚硅谷免费的视频
流程控制结构概述
顺序结构
程序从上往下依次执行,遵循前向引用的特点
分支结构
程序从两条或多条路径中选择一条执行
一、if结构
特点:
①条件的结果肯定是boolean类型,表示形式:关系表达式或逻辑表达式或boolean的变量或常量或boolean变量的赋值语句
②大括号如果省略,默认执行第一条语句
1、单分支
语法:
if(条件){
要执行的语句;
}
2、双分支
语法:
if(条件){
语句1
}else{
语句2
}
3、多分支
语法:
if(条件){
语句1;
}else if(条件2){
语句2;
}...
else{
语句n;
}
4、嵌套分支
语法:
if()
if(){
}
else
if(){
}else if(){
}
二、switch结构
语法:
switch(变量或表达式){
case 常量值1:
语句1;break;
case 常量值2:
语句2;break;
....
default:
语句n;break;
}
执行顺序:
先判断变量或表达式的值,然后依次从上往下判断各个case的值是否匹配,如果匹配,则执行case后面的语句,直到遇见break为止
如果都不匹配,则执行default语句,直到遇见break为止
注意事项:
①要判断的变量或表达式的类型只能是:int、char、byte、short、String、枚举
②case后面只能是常量值
③case后面的常量值不能重复
④break可以省略,但影响效果
⑤default语句可以省略,可以提到前面
三、if和switch的对比
能用switch的,肯定能用if解决。
但能用if的,不一定用switch解决,必须满足以下要求:
①类型必须满足
②等值判断
能用switch解决,尽量使用switch,因为效率较高!
循环结构
一、循环结构的好处
1、提高代码的重用性
2、提高代码的维护性
二、循环结构的四要素
循环变量初始化
循环条件
循环操作
循环变量迭代
三、循环结构分类
while
do while
for
引申:增强for循环
四、使用落地步骤
题型一:知道循环次数的题目
比如:打印100遍“好好学习”、打印1——200之间所有的偶数等等
优先考虑用for解决!
1、套用for循环的语法框架
for(int i=起始值;i<=次数或终止值;i++){
//循环操作
}
2、分析循环操作
3、检验循环的四要素是否都存在等
题型二:不知道循环次数的题目
比如:一直输入姓名,直到输入q停止
优先考虑用while或do while解决
1、先分析循环操作和循环条件
2、再套用循环语法
while(循环条件){
循环操作
}
3、检验循环的四要素是否都存在等
一)循环结构一:while循环
语法:
循环变量初始化 ①
while(循环条件){ ②
循环操作 ③
循环变量迭代 ④
}
执行顺序:① ② ③ ④ ②③④ ....直到②不成立为止
二)循环结构二:for循环
语法:
① ② ④
for(循环变量初始化;循环条件;循环变量迭代){
循环操作 ③
}
执行顺序:① ② ③ ④ ②③④ ....直到②不成立为止
三)循环结构三:do while循环
语法:
循环变量初始化 ①
do{
循环操作 ③
循环变量迭代 ④
}while(循环条件) ②
执行顺序:① ③ ④ ② ③④ ② ....直到②不成立为止
五、嵌套循环
理解:一个循环结构中又嵌套了另一个完整的循环结构里面的循环称为内层循环,外面的循环称为外层循环。
跳转结构
一、break
作用:一般用于循环或switch中,跳出所在的循环或switch
语法:一般搭配if语句使用放在循环中,或放在switch中
示例:
while(){
if(){
break;
}
}
switch(){
case 值:语句;break;
}
特点:
嵌套循环中如果使用了break,默认跳出的仅仅是内层循环,如果想跳出外层循环,则需要搭配标签使用
示例:
a:while(){
for(){
if(){
break a;
}
}
}
二、continue
作用:只能用于循环中,结束本次循环,继续下一次循环
语法:搭配着if放在循环中
示例:
while(){
if(){
continue;
}
}
while(){
switch(){
case 值:语句;continue;
}
}
特点:
嵌套循环中使用了continue,默认对内层循环起作用,如果想对外层循环起作用,可以搭配标签使用
三、return
作用:用于方法中,跳出所在的方法
流程控制结构说明
分支结构
概念
程序从两条或多条路径中选择一条去执行,这种结构称为分支结构
if结构
特点:
①条件表达式的形式可以为:
boolean的变量
boolean变量的赋值
关系表达式
逻辑表达式
只要最终结果为boolean类型即可
②大括号中的执行语句,可以为0条或任意多条,而且可以是任意的打印、变量、运算、if结构等
③当大括号中的执行语句只有一条的时候,可以省略大括号!
一、单分支
说明:
程序从一条路径中去选择,要么执行,要么不执行
语法:
if(条件){
//条件成立要执行的语句块
}
二、双分支
说明:
程序从两条路径中去选择,要么执行a,要么执行
语法:
if(条件){
//条件成立要执行的语句块
}else{
//条件不成立要执行的语句块
}
三、多重分支
说明:
程序从多条路径中去选择,最终选择一条
语法:
if(条件){
//条件成立要执行的语句块
}else if(条件2){
}else if(条件3){
}....
else{
//条件不成立要执行的语句块
}
注意事项:
1、从上往下依次判断if条件的,如果某个条件成立,则下面的条件将不再执行
2、else if块的顺序最好不要调换,因为可能影响效果
3、else块可以省略,也可能影响效果
4、区分开多重if结构和多个if 结构
四、嵌套分支
说明:
一个分支结构中又完整的嵌套了另一个完整的分支结构
示例:
if(){
if(){
}else{
}
}
switch结构
一、语法
switch(变量或表达式){
case 常量1:语句1;break;
case 常量2:语句2;break;
....
default:语句n;break;
}
二、执行顺序
先判断出switch括号中的变量或表达式的值,然后依次判断case的常量值是否与之相等
如果相等,则执行对应case的语句块,直到遇见break为止
如果没有相等的,则执行default语句块,直到遇见break为止
三、语法注事项
1、变量或表达式的类型:byte、short、int、枚举、String、char
2、case后只能是常量
3、case后的常量不能重复
4、break从语法上可以省略,但影响效果
5、default从语法上可以省略而且可以调换顺序,但影响效果
if结构和switch结构大pk
相同点:
都属于分支结构,很多时候都可以互相替换解决分支结构的题目
不同点:
能用switch结构的题目,肯定能用if结构解决
能用if结构解决的题目,不一定能用switch结构解决,必须满足以下条件:
①判断的类型有限制,必须是byte、short、int、枚举、String、char
②必须为等值判断
Java中定义成员变量时采用合法的前向引用。如:
public class Test{
int num1 = 12;
int num2 = num1 + 2;
}
错误形式:
public class Test{
int num2 = num1 + 2;
int num1 = 12;
}
if语句三种格式:
1. if(条件表达式){
执行代码块;
}
2. if(条件表达式){
执行代码块1;
}
else{
执行代码块2;
}
3. if(条件表达式1){
执行代码块1;
}
else if (条件表达式2){
执行代码块2;
}
……
else{
执行代码块n;
}
switch(表达式){
case 常量1:
语句1;
break;
case 常量2:
语句2;
break;
… …
case 常量N:
语句N;
break;
default:
语句;
break;
}
如:
String season = “summer”;
switch (season) {
case “spring”:
System.out.println(“春暖花开");
break;
case “summer”:
System.out.println(“夏日炎炎");
break;
case “autumn”:
System.out.println(“秋高气爽");
break;
case “winter”:
System.out.println(“冬雪皑皑");
break;
default:
System.out.println(“季节输入有误");
break;
}
switch语句有关规则
switch(表达式)中表达式的值必须是下述几种类型之一:byte,short,char,int,枚举,String;
case子句中的值必须是常量,且所有case子句中的值应是不同的;
default子句是可任选的,当没有匹配的case时,执行default;
break语句用来在执行完一个case分支后使程序跳出switch语句块;如果没有break,程序会顺序执行到switch结尾。
如果判断的具体数值不多,而且符合byte、 short 、int、 char这四种类型。虽然两个语句都可以使用,建议使用swtich语句。因为效率稍高。
其他情况:对区间判断,对结果为boolean类型判断,使用if,if的使用范围更广。
语法:
while(循环条件){
循环操作;
}
语法格式
[初始化语句]
while( 布尔值测试表达式){
语句或语句块;
[更改语句;]
}
应用举例
int result = 0;
int i=1;
while(i<=100) {
result += i;
i++;
}
System.out.println("result=" + result);
语法格式
for (初始化表达式①; 布尔值测试表达式②⑤⑧; 更改表达式④⑦){
语句或语句块③⑥ ;
}
for (初始化表达式①; 布尔值测试表达式②⑤⑦; 更改表达式){
语句或语句块③⑥ ;
}
语法格式
[初始化语句]
do{
语句或语句块;
[更改语句;]
}while(布尔值测试表达式);
应用举例
int result = 0, i=1;
do{
result += i;
i++;
}while(i<=100);
System.out.println("result=" + result);
将一个循环放在另一个循环体内,就形成了嵌套循环。其中,for ,while ,do…while均可以作为外层循环和内层循环。
实质上,嵌套循环就是把内层循环当成外层循环的循环体。当只有内层循环的循环条件为false时,才会完全跳出内层循环,才可结束外层的当次循环,开始下一次的循环。
设外层循环次数为m次,内层为n次,则内层循环体实际上需要执行m*n=mn次。
break 语句
break语句用于终止某个语句块的执行
{ ……
break;
……
}
break语句出现在多层嵌套的语句块中时,可以通过标签指明要终止的是哪一层语句块
label1: { ……
label2: { ……
label3: { ……
break label2;
……
}
}
}
continue 语句
continue语句用于跳过某个循环语句块的一次执行 。
continue语句出现在多层嵌套的循环语句体中时,可以通过标签指明要跳过的是哪一层循环
return语句
return:并非专门用于结束循环的,它的功能是结束一个方法。当一个方法执行到一个return语句时,这个方法将被结束。
与break和continue不同的是,return直接结束整个方法,不管这个return处于多少层循环之内
break只能用于switch语句和循环语句中。
continue 只能用于循环语句中。
二者功能类似,但continue是终止本次循环,break是终止本层循环。
break、continue之后不能有其他的语句,因为程序永远不会执行其后的语句。
标号语句必须紧接在循环的头部。标号语句不能用在非循环语句的前面。
很多语言都有goto语句,goto语句可以随意将控制转移到程序中的任意一条语句上,然后执行它。但使程序容易出错。Java中的break和continue是不同于goto的。