何先振第6期:Java基本语法之流程控制

      大家好,我叫何先振。今天给大家讲的是Java基本语法,流程控制部分。

      什么叫流程控制?就是控制我们代码中的运行流程。默认我们的代码运行流程,都是从上到下的顺序执行。我们可以通过一些流程控制代码,让他产生分支,或者循环。

      程序设计中规定的三种基本流程结构,可分为:顺序结构、分支结构、循环结构。

一.顺序结构

      就是程序从上到下逐行的执行,中间没有任何判断和跳转。

二.分支结构

      根据条件,选择性地执行某段代码。有if....else.....和switch...case....两种分支语句。

1.if....else.....结构

      第一种结构:if(条件表达式){ 代码块 },其中条件表达式的值必须是布尔类型,要么是true,要么是false。如果是true就满足条件,执行{}里面的代码块。如果是false就不执行{}里面的代码块。如图:

      第二种结构:if(条件表达式){ 代码块1 }else{ 代码块2 },条件表达式也必须是布尔类型,要么是true,要么是false。如果是true就满足条件,执行代码块1。如果是false,就执行else中的代码块2,也就是二选一的结构。如图:

      第三种结构:if(条件表达式1){ 代码块1 }else if(条件表达式2){ 代码块2 }else if(条件表达式3){ 代码块3 }......else{ 代码块n },满足哪个表达式,就去执行哪个代码块。如果都不满足,就执行else。这是多选一的结构。

根据键盘输入的值,进行条件控制

      通过java提供的Scanner类提供的api去接收键盘输入的值。Scanner类,是Java的jdk提供的一些工具类。这个工具类有些api可以帮我们接收键盘输入的值。通过jdk的api文档,我们可以看到有关Scanner工具类的介绍。如图:

      我们要引入Scanner工具类,第一步要导入包,通过关键字 import 包路径。导入包之后,程序就可以通过import 下面的包路径识别到Scanner类了。从api文档中,我们看到包的路径是:   java.util.Scanner,如图:

      第二步,我们要想使用Scanner类的api,就需要创建Scanner类的实例对象。我们通过new关键字来创建。这个后面到面向对象,再来详细讲,现在可以先知道怎么用。如图:

      第三步,通过实例对象,点出具体的api,接收键盘输入的值。

      有了这个,我们就可以用if....else.....去获取键盘上输入的值,去进行条件控制,执行相应的代码。api文档中,可以查看Scanner的一些api介绍,不止是可以接收int类型的值。还有提供next()提供接收字符串,以及其他api来接收不同类型的,具体可以看jdk api文档。如图:

2.switch.....case......结构 

      格式:switch(表达式){ case 常量1: 执行语句1 break; case 常量2: 执行语句2 break; ..... default: 执行语句n }switch 有开关的含义,他会拿着表达式的值,去依次匹配case中的常量,一旦匹配成功,就会进入某个case,执行语句。如果你没有加break,就会继续执行下一个case的代码,直到执行完所有。如图:

      如果加了break,break是跳出switch开关,就不会执行下面switch结构中的case执行语句。如图:

      case中的常量如果都不满足,最后执行default: 执行语句n。如图:

注意:

1.switch的表达式只能是如下的6种类型之一:byte、short、char、int、String类型、枚举类型。

2.枚举类型是jdk5.0新增的,什么是枚举类型,这个我们可以放在枚举类的时候再说。

3.String类型是jdk1.7新增的,如果用的jdk版本是1.7以下,switch中的表达式不能用String类型。

4.case 后面只能声明常量,不能声明范围,如果你case后面填写 num>10 这个是会报错的。

3.总结:

      凡是可以使用switch....case....结构,都可以转换成if....else....结构。反之,则不成立。当我们使用分支结构时,发现可以使用switch也可以使用if的时候,可以优先使用switch。原因switch...case....执行效率高。

三.循环结构

      循环的理解:根据循环条件,如果满足条件的话,会重复性的执行某段代码。

      循环语句由四要素组成:分为初始化部分,循环条件部分,循环体部分,迭代部分。

      最开始进入条件的就是初始化部分,判断是否符合循环条件,如果不符合就不进入循环体,如果符合就进入循环体,然后迭代之前的初始部分,继续判断循环条件,直到不满足循环条件,就不执行循环体。其中循环条件是布尔类型,是false就不满足条件,true就满足条件。

      Java中循环的类型:java中有while循环、do.....while循环、for循环三种循环语句。

for循环:for(初始化部分;循环条件;迭代部分){ 循环体 }

      执行过程,先执行初始化部分,然后循环条件判断,满足执行循环体,最后执行迭代部分。再继续执行循环条件,满足又执行循环体,直到不满足循环条件。如图:

      这样我们可以更容易看清楚,for循环的执行流程。如图:

      for循环里面可以跟分支结构嵌套使用。如图:

while循环:while(循环条件){ 循环体}。

      while循环中,初始化条件部分是放在while外面的,在括号内直接判断是否符合循环条件,符合执行循环体。

      注意:while循环的循环体包含了迭代部分,如果少了迭代部分就会进入死循环。就算没有迭代部分,也要给出达到什么条件时,结束循环。

      for循环可以跟while循环相互转换的。区别是for循环和while循环的初始化条件部分的作用范围不同。for循环初始化条件是在for循环里面,while循环是放在外面,可以被外面访问到。使用例子:

do....while循环:do{ 循环体 }while(循环条件);

      do—while循环,初始化条件也是放在循环外面的,他的执行过程是先执行一次循环体,其中循环体包含了迭代部分,如果缺少就会出现死循环的情况,最后运行完循环体再判断循环条件是否可以满足。满足的话又进入循环体。也就是先循环,再判断。如图:

      注意:do--while循环,至少会执行一次循环体。如图:

      开发中使用for和while循环会比较多一些,使用do-while会比较少。jdk1.5以上,提供了foreach循环,方便遍历数组和集合中的元素。这个后面我们再讲解。

循环中特殊关键字的使用

break;

范围:break 可以使用在switch-case结构中,也可以使用在循环结构中。

作用:结束当前循环。

例子中,当被4整除时,进入if判断中,直接跳出循环。所以打印了1,2,3

continue;

范围:continue 中只能使用在循环结构中。

作用:结束当次循环,进入下次循环。

例子中,当被4整除时,进入if判断,跳出当次循环,进入下次的循环,所以i=4和i=8时,都不执行打印语句。

      相同点,break 和continue 的后面都不能再执行代码了,写了代码会报错。

嵌套循环

      嵌套循环中,外循环m,嵌套内循环n,一共执行m*n次。每执行外循环一次,会把内循环全部执行完。如图:外循环4次,每次都会求一遍10以内的偶数。

      break关键字默认跳出最近的循环。内循环每次从1开始,运行到4时结束循环,就只能打印123。外循环循环了4次,没执行一次就换行,没有被跳出,所以就打印了4行123。

      continue关键字默认结束最近的循环的当次循环。同break一样,continue会跳过内循环的4,8的次数。其他的次数还是会执行,所以打印的是123567910,外循环不受影响,每次执行一次就会换行,一共执行了4次。打印了4行123567910。

      如果要想使用break直接跳出外循环,可以给外循环加上标签,然后再break关键字 后面加上标签名,就可以跳出去了。打印完123直接跳出。

      continue也是一样,可以通过在外循环加上标签,然后结束外层循环的当次循环。比如外层循环循环4次,每次内部循环到123时,结束外层循环次数,进入下一次,一共4次,就重复打印了4次的123。

      以上就是我们的流程控制语句介绍,学习更多Java知识请点击关系,下期我们开始讲开发工具Eclipse的使用。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值