程序流程控制
顺序结构
Java的基本结构就是顺序结构,除非特别指明,否则就按照由上到下的顺序一句一句的执行。
顺序结构是最简单的算法结构。
语句与语句之间,框与框之间是按从上到下的顺序进行的,它是由若干个一次执行的处理步骤组成的,它是任何一个算法都离不开的一种基本算法结构。分支结构
System.out.println(1);
System.out.println(2);
System.out.println(3);
// 顺序执行 输出 1、2、3 这就叫做从上到下执行的顺序结构
分支结构
if分支
if单选择结构
- 在写程序的过程中,经常会判断一个东西是否可行,然后才去执行代码,也就是如果为布尔值true就执行,如果为布尔值false就不执行
public class Demo {
public static void main(String[] args) {
int a = 8;
if (a == 8){
System.out.println("满足条件,从第一个出口输出");
}
}
}
if双选择机构
在程序实际开发场景中,会有很多类似:判断某一个东西可行然后执行一些代码,否则执行另一段代码。
public class Demo {
public static void main(String[] args) {
int a = 8;
if (a > 8){
System.out.println("满足条件,从第一个出口输出");
} else {
System.out.println("第一个条件不满足,直接执行第二条语句体");
}
}
}
多重if选择结构
比双选择if结构更复杂的业务场景,就要用到嵌套的if结构,比如:不断地判断某个东西是否符合条件,判断符合就执行对应的处理方法。
package d3_if;
public class ifDemo4 {
public static void main(String[] args) {
//需求:针对成绩进行判断,大于90分 打印优秀 大于80分 打印良好 大于 60分 打印需要加油 否则 不及格
//定义一个变量 保存成绩
double score = 50;
//条件判断
if(score > 90){
System.out.println("成绩优秀");
}else if(score >= 80){
System.out.println("成绩良好");
}else if(score >= 60){
System.out.println("需要加油");
}else{
System.out.println("成绩不及格");
}
}
}
提示
第二个判断条件前的else if和if区别很大,注意区分,else if表示上一个条件不满足则判断这个条件是否满足,满足则直接跳出,if的话会把每个一个if的条件语句全部判断一次,可能会执行一个以上的语句体,但前者只会执行一个满足条件的语句体。
if(条件){},()后不能跟“;”否则{}中的代码将不受if的控制了。;代表该行代码结束运行。
如果if语句的{}中只有一行代码的情况,{}可以省略不写(但是不推荐省略)。
public class Demo {
public static void main(String[] args) {
double score = 95;
//条件判断
if(score >= 60){
System.out.println("及格了");
}if(score >= 80){
System.out.println("还需要努力");
}if(score >= 90){
System.out.println("优秀");
}if(score > 95){
System.out.println("很优秀");
}
}
}
switch分支
switch的注意事项
概述:switch分支是通过比较值来决定执行哪条分支。
switch分支的执行流程:
①先执行表达式的值,再拿着这个值去与case后的值进行匹配。
②与哪个case后的值匹配为true就执行哪个case块的代码,遇到break就跳出switch分支。
③如果全部case后的值与之匹配都是false,则执行default块的代码。
if、switch的比较:
各自适合什么业务场景?
①if其实在功能上远远强大于switch。
②if适合做条件是区间判断的情况。
③switch适合做:条件是比较值的情况、代码优雅、性能较好。
使用switch时有哪些注意事项?
①表达式类型只能是byte、short、int、char,JDK5开始支持枚举,JDK7开始支持String、不支持double、float、long。
②case给出的值不允许重复,且只能是字面量,不能是变量。
③正常使用switch的时候,不要忘记写break,否则会出现穿透现象。
switch穿透性能解决什么问题?
存在多个case分支的代码是一样时,可以把代码写到一个case块,其他case块通过穿透性能,穿透到该case块即可,这样可以简化代码。
switch案例
public class Demo {
public static void main(String[] args) {
int i = 2;
switch(i){
case 1:
System.out.println("结果是1");
break;//结束标记 不写break就会发生case穿透
case 2:
System.out.println("结果是2");
break;
case 3:
System.out.println("结果是3");
break;
//case 数量不限
default: // 相当于else,以上判断都不成立执行
System.out.println("结果未知");
}
}
}