在一个程序执行的过程中,各条语句的执行顺序对程序的结果是有直接影响的。也就是说程序的流程对运行结果有直接的影响。所以,我们必须清楚每条语句的执行流程。而且,很多时候我们要通过控制语句的执行顺序来实现我们要完成的功能。

流程控制语句分类

顺序结构
选择结构
循环结构

顺序结构

是程序中最简单最基本的流程控制,没有特定的语法结构,按照代码的先后顺序,依次执行,程序中大多数的代码都是这样执行的。

选择结构

也被称为分支结构。
选择结构有特定的语法格式,我们必须按照它的基本格式来编写代码。
Java语言提供了两种选择结构语句:
1.if语句
2.switch语句

if语句

if语句有三种格式

if语句第一种格式:

if(关系表达式) {
语句体
}

执行流程
首先判断关系表达式看其结果是true还是false
如果是true就执行语句体
如果是false就不执行语句体

if语句第二种格式:

if(关系表达式) {
语句体1;
}else {
语句体2;
}

执行流程
首先判断关系表达式看其结果是true还是false
如果是true就执行语句体1
如果是false就执行语句体2

if语句第三种格式:

if(关系表达式1) {
语句体1;
}else if (关系表达式2) {
语句体2;
}
else {
语句体n+1;
}

执行流程
首先判断关系表达式1看其结果是true还是false
如果是true就执行语句体1
如果是false就继续判断关系表达式2看其结果是true还是false
如果是true就执行语句体2
如果是false就继续判断关系表达式…看其结果是true还是false
如果没有任何关系表达式为true,就执行语句体n+1。

switch语句
    switch(表达式) {
case 值1:
语句体1;
break;
case 值2:
语句体2;
break;

default:
语句体n+1;
break;
}

表达式:byte,short,int,char;JDK1.5以后可以是枚举,JDK1.7以后可以是字符串.

case后面的值:是用来和表达式的值进行匹配的内容

break表示终止

default所有的值都不匹配的时候,就执行default

执行过程:

A.首先计算表达式的值

B.拿着这个计算出的值,依次和case后面的值进行匹配.一旦有对应的值,就会执行相应的语句,在执行的过程中遇到break就会结束.

C.最后,如果所有的case都和表达式的值不匹配,就会执行default语句体部分,然后程序结束掉.

循环语句

循环语句可以在满足循环条件的情况下,反复执行某一段代码,这段被重复执行的代码被称为循环体语句,当反复执行这个循环体时,需要在合适的时候把循环判断条件修改为false,从而结束循环,否则循环将一直执行下去,形成死循环。

循环语句的组成

初始化语句:一条或者多条语句,这些语句完成一些初始化操作。
判断条件语句:这是一个boolean 表达式,这个表达式能决定是否执行循环体。
循环体语句:这个部分是循环体语句,也就是我们要多次做的事情。
控制条件语句:这个部分在一次循环体结束后,下一次循环判断条件执行前执行。通过用于控制循环条件中的变量,使得循环在合适的时候结束。

Java提供了三种循环结构语句:
for,while,do…while

for循环语句格式:
for(初始化语句;判断条件语句;控制条件语句) {
循环体语句;
}

执行流程
A:执行初始化语句
B:执行判断条件语句,看其结果是true还是false
      如果是false,循环结束。
      如果是true,继续执行。
C:执行循环体语句
D:执行控制条件语句
E:回到B继续

while循环语句格式:

基本格式

while(判断条件语句) {
循环体语句;
}

扩展格式

初始化语句;
while(判断条件语句) {
循环体语句;
控制条件语句;
}

do…while循环语句格式:

基本格式

do {
循环体语句;
}while(判断条件语句);

扩展格式

初始化语句;
do {
循环体语句;
控制条件语句;
} while((判断条件语句);

执行流程:

A:执行初始化语句

B:执行循环体语句

C:执行控制条件语句

D:执行判断条件语句,看是true还是false

如果是false,就结束循环

如果是true,就回到B继续

三种循环的区别

虽然可以完成同样的功能,但是还是有小区别:

do…while循环至少会执行一次循环体。
for循环和while循环只有在条件成立的时候才会去执行循环体

for循环语句和while循环语句的小区别:

使用区别:控制条件语句所控制的那个变量,在for循环结束后,就不能再被访问到了,而while循环结束还可以继续使用,如果你想继续使用,就用while,否则推荐使用for。原因是for循环结束,该变量就从内存中消失,能够提高内存的使用效率。

推荐使用顺序:for;while;do..while;

跳转控制语句break

想让循环在某一步的时候结束或者跳过某些数据不要,现在就做不了这件事情。为了弥补这个缺陷,Java就提供了break,continue来实现控制语句的中断和跳转。

break 中断

break的使用场景:

在选择结构switch语句中
在循环语句中

注意:离开使用场景的存在是没有意义的

break的作用:

跳出单层循环

跳转控制语句continue

continue的使用场景:

在循环语句中
离开使用场景的存在是没有意义的

continue的作用:

结束一次循环,进入下一次循环

单层循环对比break,然后总结两个的区别

break 退出当前循环
continue 退出本次循环

Java基础-流程控制(04)的更多相关文章

  1. java基础 流程控制和条件语句,循环语句

    顺序结构 程序的顺序结构: 如果代码里没有流程控制,程序是按照书写的格式从上而下一行一行执行的, 一条语句执行完之后继续执行下一条语句,中间没有判断和跳转,直到程序的结束. if语句 if语句使用bo ...

  2. java 基础 流程控制

    鄙人不才,基础不好,趁着闲时简单学习一下,仅作学习分享,如有不正确地方还请各位看客不吝指出. Java流程主要可以分为: 顺序(可以按照正常顺序一步步往下运行的) 选择(三元操作符[?:];if el ...

  3. Java编程基础——流程控制

    Java编程基础——流程控制 摘要:本文主要介绍Java编程中的流程控制语句. 分类 流程控制指的是在程序运行的过程中控制程序运行走向的方式.主要分为以下三种: 顺序结构:从上到下依次执行每条语句操作 ...

  4. Java的流程控制和C++的异同

    Java的流程控制和C++基本相似 现将不同的地方总结一下,以便快速掌握. Java的特殊流程控制的特殊部分: 1.顺序结构  -- 没有区别 2.分之结构  -- 没有区别 3.循环结构 1> ...

  5. 小白学 Python(8):基础流程控制(下)

    人生苦短,我选Python 前文传送门 小白学 Python(1):开篇 小白学 Python(2):基础数据类型(上) 小白学 Python(3):基础数据类型(下) 小白学 Python(4):变 ...

  6. Java学习--流程控制

    Java学习 流程控制 用户交互Scanner Scanner对象 Java通过Scanner类获取用户的输入 基本语法: Scanner scanner = new Scanner(System.i ...

  7. Java程序流程控制之if-else if-else

    java基础之流程控制(一)    流程控制 Flow Control :       流程控制语句是编程语言中的核心之一.可以分为 分支语句.循环语句和跳转语句.        本讲内容包括分支语句 ...

  8. 黑马程序员——C语言基础 流程控制 选择结构和循环结构

    ---恢复内容开始--- Java培训.Android培训.iOS培训..Net培训.期待与您交流! (以下内容是对黑马苹果入学视频的个人知识点总结) (一)流程控制 1> 顺序结构:默认的流程 ...

  9. Python基础—流程控制

    一.Python流程控制 计算机程序在解决某个具体问题时,包括三种情形,即顺序执行所有的语句.选择执行部分的语句和循环执行部分语句,这正好对应着程序设计中的三种程序执行结构流程:顺序结构.选择结构和循 ...

随机推荐

  1. Python的自学之路:Python基础(一)

    声明:我写博客不是为了什么,只是为了记录自己的学习状态,学过的知识点!方便以后进行好的复习!python小白,勿喷 python环境的搭建,在这里就不细说了,这里有我的链接,可以参考一下:https: ...

  2. Exception in thread "main" org.hibernate.MappingException: You may only specify a cache for root

    如果出现类似下面的错误: Exception in thread "main" org.hibernate.MappingException: You may only speci ...

  3. Java面试准备

    今天我们会分为四个部分来谈论这个问题,由于我本身是Java出身,因此关于主语言的问题,都是与Java相关,其它语言的同学可以选择性忽略.此外,面试的时候一般面试官的问题都是环环相扣,逐渐深入的,这点在 ...

  4. IDEA 2 的注册码

    43B4A73YYJ-eyJsaWNlbnNlSWQiOiI0M0I0QTczWVlKIiwibGljZW5zZWVOYW1lIjoibGFuIHl1IiwiYXNzaWduZWVOYW1lIjoiI ...

  5. 基于c编写的关于随机生成四则运算的小程序

    基于http://www.cnblogs.com/HAOZHE/p/5276763.html改编写的关于随机生成四则运算的小程序 github源码和工程文件地址:https://github.com/ ...

  6. ajax 发送json 后台接收 遍历保存进数据库

    前台怎么拿参数的我就不管了我也不会 反正用这个ajax没错 ajax 代码   一定要写明http请求类型  { contentType:"application/x-www-form-ur ...

  7. [C#]关于DBNULL的解释

    1   概述 如下例子,你觉得有什么问题?如你能很快的找出问题,并且解决它,那么你可以跳过本篇文章,谢谢~~. List<Base_Employee> ltPI = new List< ...

  8. 第一个asp.net MVC5+ExtJS6入门案例项目

    最近在学习asp.net MVC,结合前段时间学习的ExtJS,做了一个入门示例.不过还有一个json日期显示的问题没有解决. [思路] 1.先搭建一个asp.net MVC项目. 2.将MVC项目的 ...

  9. Ubuntu 安装 SQL Server

    SQL Server现在可以在Linux上运行了!正如微软CEO Satya Nadella说的,"Microsoft Loves Linux",既Windows 10内置的Lin ...

  10. Quartz学习——Spring和Quartz集成详解(三)

    Spring是一个很优秀的框架,它无缝的集成了Quartz,简单方便的让企业级应用更好的使用Quartz进行任务的调度.下面就对Spring集成Quartz进行简单的介绍和示例讲解!和上一节 Quar ...