流程概述:程序的流程对运行结果有直接的影响,所以必须清楚每条语句的运行流程,而且还要通过控制语句的流程顺序来实现我们要完成的结构
顺序结构:从上往下按顺序来
1.if语句
第一种:
if(关系表达式){
语句体;
}
(关系表达式成立,就执行语句体,反之不执行)
(结果没反应,因为条件不成立,a比b小)
(改成a<b就OK,条件成立,能输出结果 )
第二种:(标准if-else语句,结果二者选其一)
if(条件表达式){
语句体1;
}
else{
语句体2;
}
(条件表达式结果是true就执行语句一,反之执行语句二)
(10对2取模结果是0,条件表达式成立,输出语句体一的结果:偶数)
第三种:
if(判断条件1 ){
执行语句1;
}
else if(判断条件二){
执行语句2;
}
....
else if (判断条件n){
执行语句n;
}
else{
执行语句n+1;
}
(首先看判断条件1成不成立,成立就执行语句1,不成立往下看判断条件2,判断条件2成立就执行语句2......以此类推,要是前n个条件都不成立,就执行语句n+1)
注意括号要用英文的括号:( 不能用中文的括号:( 看起来很像但是间距不一样
最后一个else后面不用加条件
if语句替换三元运算符:
2.switch语句
switch (表达式){
case 常量值1 :
语句体1;
break;
case 常量值2 :
语句体2;
break;
........
default:
语句体n+1;
break;
}
(检测表达式的结果,结果符合哪个case的值就执行哪个case的语句体,直到遇到break或者整体结束。 如果所有的case结果都不符合,就执行default语句,default负责收尾【相当于if语句里面的else】、default后面可以不加break,但是建议加上)
(num的结果符合case 1: 所以执行语句一的内容)
注意:
1.多个case后面的值不能重复(会报错:标签重复)
2.switch后面括号里只能是基本数据类型:byte\short\char\int 和 string字符串\enum枚举
3.switch语句格式可以很灵活:前后顺序可以颠倒(不同case的顺序可颠倒、default也不一定要放最后),break可以省略(省略的话就可能出现执行了好几个case的结果)
说明:
1.如果多个case的执行语句相同,可以考虑合并
2.凡是可以使用switch case的情况,都可以用if-else代替(反之不成立)
3.写分支结构时,若二者都可使用(switch-case不复杂),优先选择switch-case,因为switch执行效率较高