想了想还是单独给程序控制流程部分开了一个文章。因为业务逻辑部分,最主要的用的还是if语句。通过对不同情形的判断,来进行情况分类,可以帮助我们实现功能,学会if是写逻辑层代码重要的一环。
流程控制语句:可以控制程序的执行流程。
顺序结构
是程序中最简单最基本的流程控制,没有特定的语法结构,按照代码的先后顺序,依次执行,程序中大多数的代码都是这样执行的。
从上往下,依次执行。
选择结构
也被称为分支结构。有特定的语法规则,代码要执行具体的逻辑运算进行判断,逻辑运算的结果有两个,所以产生选择,按照不同的选择执行不同的代码。
两种:
if语句的使用场景:
a.针对表达式是一个boolean类型的判断
b.针对一个范围的判断
c.针对几个常量值的判断
switch语句使用场景:针对几个常量值的判断
1.if语句
if语句的使用格式:
a. 适合做单个判断
if(关系表达式){
语句体
}
if语句控制的语句体如果是一条语句,大括号可以省略,如果是多条语句,就不能省略。建议永远不要省略。
一般来说,有左大括号就没有分号,有分号就没有左大括号。if();或if(){}
b.适合做两个判断
if(关系表达式){
语句体1;
}else{
语句体2;
}
else后面是没有表达式的,只有if后面有。
三元运算符实现的都可以用if语句实现。反之不成立(因为当if语句控制的操作是一个输出语句时候就不能,三元运算符是一个运算符,操作完毕是会有一个结果而不是一个输出语句)
c.适合做多个判断
if(比较表达式1){
语句体1;
}else if(比较表达式2){
语句体2;
}else if(比较表达式3){
语句体3;
}
…
else{
语句体n+1;
}
注意事项:比较表达式无论简单还是复杂,结果必须是boolean类型。
if语句是可以任意嵌套使用的,把语句体n改为if语句即可实现(无论使用if三种格式那种都行)。
\2. switch语句
switch(表达式){
case 值1:
语句体1;
break;
case 值2:
语句体2;
break;
…
default:
语句体n+1;
break;
}
switch:表示这是switch选择结构。
表达式:表达式取值有限定,byte,short,char,int。JDK5以后可以是枚举,JDK7以后可以是字符串。
case后面跟的是要和表达式比较的值。
语句体部分可以是一条或者多条语句
break表示中断,结束的意思,可以结束switch语句。
注意事项:
\1. case后面只能是常量,不能是变量,而且多个case后面的值不能出现相同的。
\2. default可以省略。一般不建议,除非判断的case值是固定的(可以穷举完)。他的作用是对不正确的情况给出提示。
\3. break可以省略。一般不建议,会出现case穿透(可以利用case穿透来实现多个输出结果相同时整合到一起)。最后一个break可以省略。
\4. default位置可以出现在switch语句的任意位置。建议在最后。
\5. switch语句的结束条件:遇到break或者执行到程序的末尾。
循环结构
循环语句的组成:
初始化语句:一条或者多条语句,这些语句完成一些初始化操作
判断条件语句:这是一个boolean表达式,这个表达式决定是否执行循环体
循环体语句:要多次循环的语句
控制条件语句:在一次循环结束后,下次循环判断条件执行前执行,通过用于控制循环条件中的变量,使得循环再合适的时候结束
for循环:
for(初始化语句;判断条件语句;控制条件语句){
循环体语句;
}
注意事项:判断条件语句的结果是一个boolean类型
循环语句如果是一条语句,大括号可以省略,如果是多条语句,大括号不能省略,建议永远不要省略。
一般来说,有左大括号就没有分号,有分号就没有左大括号。
for循环:求和思想:初始化值为0。
求阶乘思想:初始化值为1。
水仙花数:就是指一个三位数,其各位数字的立方和等于该数本身。eg:153
while循环:
基本格式:
while(判断条件语句){
循环体语句;
}
扩展格式:
初始化语句;
while(判断条件语句){
循环体语句;
控制条件语句;
}
for循环和while循环语句可以等价转换,但也存在区别:
使用区别:控制条件语句所控制的那个变量,在for循环结束后,就不能在被访问到了,而while循环结束还可以继续使用。若不使用推荐使用for循环,因为这个变量会从内存中消失,能够提高内存的使用效率。
场景区别:for循环适合针对一个范围判断进行操作,while循环适合判断次数不明确的操作。
do … while 循环语句:
至少执行一次
基本格式:
do{
循环体语句;
}while(判断条件语句);
扩展格式:
初始化语句;
do{
循环体语句;
控制条件语句;
}while(判断条件语句);
优先考虑for循环,其次是while循环,最后考虑do… while循环。
注意死循环:ctrl+c中断循环
A:注意控制条件语句控制的那个变量的问题,不要丢了,否则会死循环。
B:两种最简单的死循环格式
while(true){
}
for(;;){
}
循环嵌套:循环语句的循环体本身是一个循环语句。
外循环控制行数,内循环控制列数。
控制跳转语句
****break****:中断
使用场景:离开下面2个场景使用,无意义。
A:switch语句中
B:循环语句中(加入了if判断的情况)
使用:A:跳出单层循环
B:跳出多层循环,必须借助标签。
格式:
标签名: 语句
****continue****:继续
使用场景:循环语句中。(离开此场景无意义)
break和continue的区别:break是跳出单层循环。continue是跳出一次循环,进行下一次的判断执行。
****return****:返回
renturn关键字不是为了跳转出循环体,更常用的功能是结束一个方法,也就是推出一个方法,跳转到上层调用的方法。
一旦遇到return,程序就不会在继续往后执行。