JAVA基础 流程控制 顺序结构 分支结构 循环结构 if-else switch for while break continue label

一、流程控制概述

     流程控制语句是用来控制程序中各语句执行顺序的语句,可以把语句组合成能完成一定功能的小逻辑模块。

     流程控制方式采用结构化程序设计中规定的三种基本流程结构,即:顺序结构,分支结构,循环结构。

1、顺序结构   程序从上到下逐条执行,中间没有任何判断和跳转。

2、分支结构    if-else  switch-case

2.1if-else  根据条件,选择性地执行某段代码。

注意:

(1)条件表达式的值都是boolean类型

(2)如果各个条件表达式之间存在“交集”,一定要注意将范围小的条件写在范围大的条件上面,否则会出现死代码(范围小的条件就没机会执行了  参考Js流程控制

2.2 switch-case

用于 简化if else中 多种情况下,等值(==)判断的情况 (注意是等值,大于,小于的还是乖乖写if else吧)

switch表达式的值=常量1/常量2/常量x.... 分别执行常量x对应的语句。

说明:switch表达式的值 只能是以下6种数据类型之一(规定):byte、short、int、char、String、枚举(没有浮点和布尔)

注意:当调用完当前case的执行语句以后,程序会继续向下执行其他case结构中的执行语句,直到遇到break关键字,或到此switch-case结构末尾为止。(建议都加break,养成好习惯)

default:可选,大备胎。如果谁都不匹配的时候,就执行default。而且default的位置很灵活,可放在switch代码块的任何位置。一般放在最后。注意如果default放在前面,就要特别注意是否加break

技巧:如果多个case的执行语句一模一样,则可以对相同语句的case进行合并

合并方法:只写最后一个case x的执行语句,加break。(前面的case空起,并且不加break)

exp: 

int score=30;

switch(score/10){

case 0:

case 1:

case 2:

        System.out.println("太菜了吧");break; //case0、1、2没有执行语句和break,自然都执行"太菜了",即完成合并

}

3、循环结构   while   do...while   for    foreach

根据循环条件,重复性的执行某段代码。下图是循环结构的通用规则。

通用说明:

1、初始化部分只执行一次。就跟后面循环没关系了

2循环条件部分的表达式值(用了关系运算符的表达式的值都是boolean类型)的数据类型必须是boolean类型(也可直接来个boolean类型的值),一旦循环条件直接用了boolean值(比如true),此时循环条件永远为真,即循环体永远执行,此时必须在循环体中使用break终止循环。

3、循环体部分同样可以使用break关键字,程序一旦读到break,会立刻跳出当个循环(如果嵌套了多个循环,一定要注意跳出的是哪一层循环)。

说明:循环体中可以使用if语句,一般break就用在if语句里面。

3.1 for 循环结构

按照前面循环结构体的通用规则,for循环体的语法如下。

语法: for(【初始化部分】;【循环条件】;【迭代部分】){  //三个部分都可以为空,for( ; ; ;) 此时相当于 while(true)

           循环体部分;}

注意:

1、初始化部分,迭代部分可以有多条语句,但是必须用,(逗号)隔开。(用;编译器会失能)

2、初始化部分里面定义的变量,是属于for循环代码块的变量,即变量作用域在for循环内部,出了for循环,就没了。

3、for(; ; ;)三处都为空,相当于while(true)。即循环条件空相当于true。另外两个部分为空,其位置就转移到while循环的结构对应的位置。

3.2 while循环

按照前面循环体的通用规则,while循环体语法如下:

初始化部分;      //在while代码块外面,说明他的作用域就不止while作用域了

while(循环条件){

循环体;

迭代部分;     //千万不能写丢迭代部分,否则就成死循环(主要由于没语法错误,所以不写迭代部分,编译也会通过)

}

总结:for循环 和 while循环可以相互转换,用哪个,看心情了吧。

3.3 do...while 循环

按照前面循环体的通用规则,do...while循环体语法如下:

初始化部分;    //初始化部分也在循环代码块外面,他的作用域也不止代码块中了

do {                     //和while的差异:不管循环条件结果是否为true,先执行一此代码块(包含循环体和迭代)

循环体;

迭代部分;

}while(循环条件);

说明:do...while循环至少会执行一次循环体。

4、扩展:嵌套循环  (一般不要嵌套超过3次)

概念:将一个循环结构A声明在另一个循环结构B的循环体中,就构成了嵌套循环。

外层循环:此时,循环结构B即外层循环

内层循环:此时,循环结构A即内层循环

说明:

1、外层循环和内层循环是相对的,嵌套层数多的时候,循环体B可能又是另一个循环结构的内层循环。

So:假设外层循环需要执行m次,内层循环需要执行n次。此时内层循环的循环体一共执行了m*n次。

2、内层循环结构遍历一遍,只相当于外层循环体执行了一次

扩展: break 和 continue

1、默认情况:

关键字名使用范围作用特别说明
breakswitch-case跳出switch-case 
循环结构跳出当前循环结构只是跳出当前循环结构,如果有嵌套循环,不会跳出上级循环结构。一般和循环体中的if联用
continue循环结构跳出当次循环只是跳出当次,继续循环本循环结构的下次循环。一般和if联用

 

2、结束多层嵌套循环中的指定某一层循环

标签:可用标签标记指定循环,之后用break 和 continue 结束指定循环结构

语法:

标签名:for( ; ; ) {     // 标签名可随意取,注意要符合标识符取名原则

      for( ; ; ) {

        break 标签名;}   //通过内层循环中的break 结束了,指定标签名的外层循环。

   }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值