引言
编程语言中,用于控制程序执行顺序,流程控制是逻辑的体现,通过流程控制可以组织多条语句。
表达式: 由运算符和操作数组成的式子( 赋值表达式 布尔表达式 算术表达式…)。
语句: 就是编程语言的一句话,以分号 ; 结尾 。
流程控制:有多个语句组成的一段代码。
语句块: { }
在编程语言中,通常有哪些流程控制呢? 顺序 选择 循环 goto跳转(java不支持,严重影响代码的可读性,很多语言都摒弃了他,但是Java依然保留了这个关键字)。
1. 顺序结构
1.1概念
顺序流程控制,是一种代码执行的默认顺序,依据代码的编写顺序从上到下,从外到内依次执行。
![图片 4_7.png](https://img-blog.csdnimg.cn/img_convert/d1ae95467e6ed985555cb6616890604d.png#crop=0&crop=0&crop=1&crop=1&height=399&id=csKfm&margin=%5Bobject%20Object%5D&name=图片 4_7.png&originHeight=759&originWidth=1200&originalType=binary&ratio=1&rotation=0&showTitle=false&size=239994&status=done&style=none&title=&width=631)
1.2 流程图
1.3 示例代码
public static void main(String[] agrs){
System.out.println("setp1:打开冰箱门");
System.out.println("setp2:大象放冰箱");
System.out.println("setp3:关闭冰箱门");
}
拿捏:这种固定套路不一定每次都有效,不可应对变化。
2.选择结构
2.1单分支IF
2.1.1 语法
if( condition ){
需要执行的语句;
}
condition 条件表达式 = > boolean
满足执行,不满足不执行。
2.1.2 流程图
2.1.3 示例代码
public static void main(String[] args){
//大象的体积
int m = 12;
//最大容量
int max = 10;
if( m < max ){
System.out.println("大象放进冰箱");
}
}
2.2双分支IF
2.2.1语法
if( condition ){
需要执行的语句;
}else{
条件不满足执行的语句;
}
2.2.2流程图
2.2.3示例代码
public static void main(String[] args){
int m = 12;
int max = 10;
if( m <= max ){
System.out.println("ok,可以放进去");
}else{
System.out.println("草,大象放不下哦");
}
}
2.3 多分支
2.3.1语法
if( condition1 ){
条件1满足 执行的语句;
}else if( condition2 ){
条件2满足 执行的语句
}else if( condition3 ){
条件N满足 执行的语句
}else{
所以条件不满足执行的语句
}
2.3.2流程图
2.3.3示例
public static void main(String[] args){
int level = 5;
if( level <=3 ){
System.out.println("倔强青铜");
}else if( level <= 6 ){
System.out.println("不屈白银");
}else if( level <= 9 ){
System.out.println("荣耀黄金");
}else if( level <= 12 ){
System.out.println("华贵铂金");
}else{
System.out.println("大神");
}
}
总结: IF 有3种写法 , 单分支 if(){ } 只关心满足条件的情况
双分支 if(){} else{ } 关心逻辑的两面性,满足做什么,不满足又做什么
多分支 if(){} else if() 区间判断,多情况判断,且这些情况都是 是连续的。
2.4 switch 分支
2.4.1 语法(了解,面试重点)
switch( value ){
case 值1 : 语句; //语句跟代码块
break;
case 值2 : 语句;
break;
case 值N : 语句;
break;
default: 语句;
}
细节 : switch 支持的数据类型 char, byte, short, int Character Byte Short Integer String(jdk1.7) enum 10种数据类型
如果 case 缺少 break 则发生 case “穿透” 不在判断后续case 值之间执行对于语句 直到 找到break;
注意事项:
1、 switch 只支持 char, byte, short, int ,String,枚举(enum );
2 、每一个case 最后都要加上break,(不然就会出现条件穿透);
3、jdk1.7+ 版本在能支持String,枚举(enum );
思考: if 和switch 有什么异同(面试题);
2.4.2 流程图
2.4.3 示例代码
public static void main(String[] args){
int num = 1;
switch( num ){
case 1 : System.out.println("亚索");
break;
case 2 : System.out.println("安琪拉");
break;
case 3 : System.out.println("王昭君");
break;
case 4 : System.out.println("黄忠");
break;
default: System.out.println("啥玩意?");
}
}
3.循环结构
重复做事情,重复执行某些代码。一般通过三个要素实现控制,1计数器,2循环条件,2计数器变化。
3.1 For 循环(重点)
3.1.1 语法
for( 初始化 ; 条件 ; 递增 ){
需要执行的语句;
}
最基本的for写法
for(;;)
需要执行的语句;
3.1.2流程图
3.1.3 示例
public static void main(String[] args){
for(int i = 0; i < 100; i++){
System.out.println(" Good Boy !");
}
}
for 循环的执行流程
3.2 while 循环
3.2.1语法
while( condition ){
执行的语句;
}
3.2.2流程图
3.2.3示例代码
public static void main(String[] args){
int i = 0;
while(i<10){
System.out.println( "hello boy" );
i++;
}
}
3.3 do-while 循环
先执行代码,后判断;
3.3.1 语法
do{
循环体;
}while( condition );
3.3.2 流程图
3.3.3 示例代码
public static void main(String[] args){
int i = 0;
do{
System.out.println( "hello boy" );
i++;
}while( i<10 );
}
3.4 break 与continue (重点)
break 和 continue 的作用是控制循环的节奏,当然break 也可以在 switch中使用,作业是结束switch。
- break: 立即终止本层循环
- continue; 跳过本次循环,快速进入下一次循环
案例说明:
public static void main(String[] args) {
System.out.println("呱呱坠地");
for (int age = 0; age <= 100 ; age++ ){
if( age == 50 ){
break;
}
System.out.println("辉哥今年"+age+"岁了");
}
System.out.println("呵呵");
}
发现输出 到 49 就没了
public static void main(String[] args) {
System.out.println("呱呱坠地");
for (int age = 0; age <= 100 ; age++ ){
if( age == 50 ){
continue;
}
System.out.println("小明今年"+age+"岁了");
}
System.out.println("呵呵");
}
发现只用 50 没有输出
总结:
* * for 关注基本明确次数的循环。
* * while循环通常是关注哪些不太确定次数的循环。
* * do-while 至少执行一次的循环
复杂点的题目(有些要嵌套for)
//1. 输入一个任意数 统计它各个位数上数字和 比如输入1234 345678 12345678 等位数不限建议使用long
//2. 1 1 2 3 5 8 13 … 打印第12项数值