Java流程控制语句(条件语句和循环语句)

 
A:什么是流程控制语句
·流程控制语句:可以控制程序的执行流程。
B:流程控制语句的分类
 
1·顺序结构

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

  总的来说:写在前面的先执行,写在后面的后执行

2·选择结构

  选择结构 也被称为分支结构。

  选择结构有特定的语法规则,代码要执行具体的逻辑运算进行判断,逻辑运算的结果有两个,所以产生选择,按照不同的选择执行不同的代码。

  Java语言提供了两种选择结构语句 if语句 switch语句

 

2.1  if语句有三种格式(选择结构)

①  if语句第一种格式:

  if(关系表达式) {

    语句体

  }

执行流程: 首先判断关系表达式看其结果是true还是false

      如果是true就执行语句体

      如果是false就不执行语句体

注意:

关系表达式无论简单还是复杂,结果必须是boolean类型

if语句控制的语句体如果是一条语句,大括号可以省略;如果是多条语句,就不能省略。建议永远不要省略。

一般来说:有左大括号就没有分号,有分号就没有左大括号  例如:

int b = 100;
if(b != 100); //这里其实是有语句体的,只不过是空语句体。

//代码块
{
System.out.println("b的值是100");
System.out.println("over");
}

 


 

②  if语句第二种格式:

  if(关系表达式) {

    语句体1;

  }else {

    语句体2;

  }

执行流程: 首先判断关系表达式看其结果是true还是false

      如果是true就执行语句体1

      如果是false就执行语句体2

 

注意:else后面是没有比较表达式的,只有if后面有。

 


 

三元运算符实现的,都可以采用if语句实现。反之不成立。

什么时候if语句实现不能用三元改进呢?
  当if语句控制的操作是一个输出语句的时候就不能。
  为什么呢?因为三元运算符是一个运算符,运算符操作完毕就应该有一个结果,而不是一个输出。

class IfDemo4 {
  public static void main(String[] args) {
    //获取两个数据的最大值
    int a = 10;
    int b = 20;

    //用if语句实现
    int max1;
    if(a > b) {
      max1 = a;
    }else {
      max1 = b;
    }
    System.out.println("max1:"+max1);

    //用三元改进
    int max2 = (a > b)? a: b;
    System.out.println("max2:"+max2);
    System.out.println("----------");

    //判断一个数据是奇数还是偶数,并输出是奇数还是偶数
    int x = 100;

    if(x%2 == 0) {
      System.out.println("100是一个偶数");
    }else {
      System.out.println("100是一个奇数");
    }

    //用三元改进;这种改进是错误的。
    //String s = (x%2 == 0)?System.out.println("100是一个偶数");:System.out.println("100是一个奇数");;
   }
 }

 


 

③  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。

 


 

④  嵌套 if 语句

  只有当外层 if 的条件成立时,才会判断内层 if 的条件。

     语法:

    

   执行过程:

   

  示例代码:

 




 

2.2  switch语句(选择结构)

switch语句格式:

  switch(表达式) {

    case 值1:

      语句体1;

      break;

    case 值2:

      语句体2;

      break;

     …

    default:

      语句体n+1;

      break;

  }

 

格式解释:

  switch表示这是switch语句

    表达式的取值:byte,short,int,char

    JDK5以后可以是枚举

    JDK7以后可以是String

  case后面跟的是要和表达式进行比较的值

  语句体部分可以是一条或多条语句

  break表示中断,结束的意思,可以结束switch语句

  default语句表示所有情况都不匹配的时候,就执行该处的内容,和if语句的else相似。

 

执行流程:

  首先计算出表达式的值

  其次,和case依次比较,一旦有对应的值,就会执行

  相应的语句,在执行的过程中,遇到break就会结束。

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

 示例代码:

  

 


 

不得不说的几点小秘密:
1、 switch 后面小括号中表达式的值必须是整型或字符型
2、 case 后面的值可以是常量数值,如 1、2;也可以是一个常量表达式,如 2+2 ;但不能是变量或带有变量的表达式,如 a * 2
3、 case 匹配后,执行匹配块里的程序代码,如果没有遇见 break 会继续执行下一个的 case 块的内容,直到遇到 break 语句或者 switch 语句块结束:
4、 可以把功能相同的 case 语句合并起来,如
5、 default 块可以出现在任意位置,也可以省略
 



 

 

 

 

 

3·循环结构 

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

 

3.1 Java循环语句    for

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

注意事项:
A:判断条件语句无论简单还是复杂结果是boolean类型。
B:循环体语句如果是一条语句,大括号可以省略;如果是多条语句,大括号不能省略。建议永远不要省略。
C:一般来说:有左大括号就没有分号,有分号就没有左大括号

 

需要留心的几个小细节:

1、 for 关键字后面括号中的三个表达式必须用 “;” 隔开,三个表达式都可以省略,但 “;” 不能省略。
    a. 省略 “初始化语句”,可以在 for 语句之前由赋值语句进行变量初始化操作,如:
  
    b. 省略 “判断条件语句”,可能会造成循环将一直执行下去,也就是我们常说的“死循环”现象,如:
  
        在编程过程中要避免“死循环”的出现,因此,对于上面的代码可以在循环体中使用 break 强制跳出循环(关于 break 的用法会在后面介绍)。
    c. 省略 “控制条件语句”,可以在循环体中进行循环变量的变化,如:
  
2、 for 循环变量初始化和循环变量变化部分,可以是使用 “,” 同时初始化或改变多个循环变量的值,如:
  
    代码中,初始化变量部分同时对两个变量 i 和 j 赋值,循环变量变化部分也同时对两个变量进行变化,运行结果:
  
3、 循环条件部分可以使用逻辑运算符组合的表达式,表示复杂判断条件,但一定注意运算的优先级,如:
  
    代码中,必须同时满足变量 i 小于 10 ,并且 i 不等于 5 时才会进行循环,输出变量 i 的值。(运算结果:1.2.3.4)到5截止
 

 

3.2 Java循环语句    while

while循环语句格式:
  基本格式
    while(判断条件语句) {
      循环体语句;
    }
  扩展格式
    初始化语句;
    while(判断条件语句) {
      循环体语句;
      控制条件语句;
     }

无限循环:   

  while(true){  } 

执行流程:

 

 

补充:for循环语句和while循环语句可以等价转换,但还是有些小区别的

使用区别:

  控制条件语句所控制的那个变量,在for循环结束后,就不能再被访问到了,而while循环结束还可以继续使用,如果你想继续使用,就用while,否则推荐使用for。

原因是for循环结束,该变量就从内存中消失,能够提高内存的使用效率。

场景区别:
  for循环适合针对一个范围判断进行操作
  while循环适合判断次数不明确操作

 


 

3.3 Java循环语句    do...while
 
do…while循环语句格式:

  基本格式
    do {
      循环体语句;
    }while((判断条件语句);
  扩展格式
    初始化语句;
    do {
      循环体语句;
      控制条件语句;
    } while((判断条件语句);

 执行流程:

1,先执行一遍循环体语句和控制条件语句,然后执行 判断条件语句 判断循环条件是否成立
2,如果条件成立,继续执行1、2步骤,直到循环条件不成立为止。

特点: 先执行,后判断

 


 

 三种循环的区别:

1> do...while循环至少执行一次循环体;而 for , while循环必须先判断条件是否成立,然后决定是否执行循环体语句。

 2> 优先考虑for,其次考虑while,最后考虑do...while

 3> do...while循环以  ;  做结束,其它的循环以  { }  做结束。

 
死循环的注意事项: 
1> 缺失控制条件语句 会造成死循环
2> 两种最简单的死循环格式

  while(true){...}
  for(; ;){...}

 

循环嵌套循环语句的循环体本身 是一个循环语句。

 




 

Java循环跳转语句    break

生活中,我们经常会因为某些原因中断既定的任务安排。在 Java 中,我们可以使用 break 语句退出指定的循环,直接执行循环后面的代码。
例如,使用循环输出 1--10的数值,其中,如果数值大于 2 ,并且为 3 的倍数则停止输出。示例代码:
 
运行结果:1 2 结束啦
 
 

Java循环跳转语句    continue

continue 的作用是跳过循环体中剩余的语句执行下一次循环。

例如,打印 1--10 之间所有的偶数,示例代码:

   

运行结果:2.4.6.8.10




 

扩展:

return和break以及continue的区别

return是结束方法
break是跳出循环
continue是终止本次循环继续下次循环

 
posted on 2018-02-28 10:03  荆棘Study  阅读(2313)  评论(0编辑  收藏  举报