Loading

05-流程控制

控制语句分为 3 类:顺序、选择和循环。这三种基本逻辑结构是相互支撑的,它们共同构成了算法的基本结构,无论怎样复杂的逻辑结构,都可以通过它们来表达。

1. 选择结构

在还没有知道选择结构的时候,编写的程序总是从程序入口开始,顺序执行每一条语句直到执行完最后一条语句结束。但是生活中经常需要进行条件判断,根据判断结果决定是否做一件事情,这就需要选择结构

1.1 if 选择结构

  • 条件表达式必须是布尔表达式(关系表达式或逻辑表达式)、布尔变量
  • 语句块只有一条执行语句时,{}可以省略
  • if-else 语句结构,根据需要可以嵌套使用
  • 当 if-else 结构是“多选一”时,最后的 else 是可选的,可根据需要省略
  • 注意【顺序】!
    • 当多个条件是“互斥”关系时,条件判断语句及执行语句间顺序无所谓
    • 当多个条件是“包含”关系时,遵循“小上大下 / 子上父下”
  • 练习

1.2 switch 多选择结构

  • switch 表达式限定:byte、short、char、int、枚举、String
  • case 限定:其后必须是一个具体常量且所有 case 子句中的常量值必须互不相同
  • switch 语句会根据表达式的值相匹配的 case 标签处开始执行,一直执行到 break 语句处或者是 switch 语句的末尾。如果表达式的值与任一 case 值不匹配,则进入 default 语句(如果存在 default 语句)
  • break 可选。用来在执行完一个 case 分支后使程序跳出 switch 语句块;但如果不加,就会出现"case 穿透"
  • default 可选。并且 default 不一定非要放在最后,可以放在任意位置
    • 但要注意,就算你把 default 放在最上边,也并不会先执行 default,只有在 case 中找不到相同的值的时候才会去执行default。
    • 如果 default 放在最后,加不加 break 无所谓,反正到末尾了;但如果你随便放,又不想 case 穿透,得加上 break。
  • 练习
    • 成绩大于 60,输出"及格";反之,"不及格"
    • 输出 year.month.day 为该年的第几天

1.3 if & switch

  • 使用 switch-case 的,都可以改写为 if-else;反之不成立
    • 当布尔表达式是 等值判断 的情况,使用 if-else if-else多选择结构 或者 switch结构 均可
    • 如果布尔表达式是 区间判断 的情况,则只能使用 if-else if-else多选择结构
  • 如果两种语句都可以使用,建议使用 swtich 语句,效率稍高

2. 循环结构

2.1 for

2.2 while

2.3 do...while

3. exercise



4. 嵌套循环

  • 在一个循环语句内部再嵌套一个或多个循环,称为“嵌套循环”。
  • while、do-while 与 for 循环可以任意嵌套多层


5. 程序流程控制

  • break;
    • break 用于强行退出当前循环,不执行循环中剩余的语句
    • 不仅能用于循环语句中,还能用在 switch-case 中
  • continue;
    • continue 语句仅用在循环语句体中,用于终止某次循环过程,即跳过循环体中尚未执行的语句。
    • 接着进行下一次是否执行循环的判定
      • 用在 while,do-while中,continue 语句立刻跳到循环首部,越过了当前循环的其余部分。
      • 用在 for 循环中,跳到 for 循环的迭代因子部分。
  • 带标签的 break 和 continue
    • "标签" 是指后面跟一个冒号的标识符,例如:label:
    • 对 Java 来说唯一用到标签的地方是在循环语句之前
    • 在循环之前设置标签的唯一理由是:我们希望在其中嵌套另一个循环,由于 break 和 continue 关键字通常只中断当前循环,但若随同标签使用,它们就会中断到存在标签的地方。
  • return;
    • 并非专门用于结束循环的,它的功能是结束一个方法。
    • 当一个方法执行到一个 return 语句时,这个方法将被结束。
    • 与 break 和 continue 不同的是,return 直接结束整个方法,不管这个 return 处于多少层循环之内。

总结:

posted @ 2020-04-28 12:33  tree6x7  阅读(120)  评论(0编辑  收藏  举报