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

时间:2022-09-08 16:47:05
 
A:什么是流程控制语句
·流程控制语句:可以控制程序的执行流程。
B:流程控制语句的分类
1·顺序结构

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

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

2·选择结构

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

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

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

 

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

①  if语句第一种格式:

  if(关系表达式) {

    语句体

  }

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

      如果是true就执行语句体

      如果是false就不执行语句体

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

注意:

关系表达式无论简单还是复杂,结果必须是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

 

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

注意: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。

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


 

④  嵌套 if 语句

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

     语法:

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

   执行过程:

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

  示例代码:

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




 

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语句体部分,然后程序结束掉。

 示例代码:

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

 


 

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



 

3·循环结构 

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

 

3.1 Java循环语句    for

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

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

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

 

需要留心的几个小细节:

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

 

3.2 Java循环语句    while

 

 

3.3 Java循环语句    do...while
 
 
 
 
 
 
 



 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

 

 
 

 

Java循环语句    while

生活中,有些时候为了完成任务,需要重复的进行某些动作。在 Java 中实现功能时,也经常需要重复执行某些代码

    Java 常用的 3 种循环: while 、 do...while 、 for

    本小节咱们先来聊聊 while

语法:

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

执行过程:

< 1 >、 判断 while 后面的条件是否成立( true / false )

< 2 >、 当条件成立时,执行循环内的操作代码 ,然后重复执行< 1 >、< 2 >, 直到循环条件不成立为止

特点:先判断,后执行

如:

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


 

Java循环语句    do...while

    do...while 循环与 while 循环语法有些类似,但执行过程差别比较大。
语法:
Java流程控制语句(条件语句和循环语句)
执行过程:
<1>、 先执行一遍循环操作,然后判断循环条件是否成立
<2>、 如果条件成立,继续执行< 1 > 、< 2 >,直到循环条件不成立为止
特点: 先执行,后判断
由此可见,do...while 语句保证循环至少被执行一次!
例如,依然输出 1000 遍“我爱慕课网”,使用 do...while 的实现代码为:
Java流程控制语句(条件语句和循环语句)

 

 

 

 

 

 
 
 

Java循环跳转语句    break

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

 

Java循环跳转语句    continue

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

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

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

    运行结果:2.4.6.8.10


 

Java循环语句    多重循环

    循环体中包含循环语句的结构称为多重循环。三种循环语句可以自身嵌套,也可以相互嵌套,最常见的就是二重循环。在二重循环中,外层循环每执行一次,内层循环要执行一圈。
如下所示:
Java流程控制语句(条件语句和循环语句)
使用 * 打印长方形;示例代码:
Java流程控制语句(条件语句和循环语句)
    执行流程:当 i = 1 时,外层循环条件成立,进入内层循环,开始打印第一行内容。此时, j 从 1 开始,循环 8 次,内层循环结束后换行,实现第一行 8 个 * 的输出。接下来返回外层循环 i 变为 2 ,准备打印下一行,依此类推,直到完成长方形的打印。
 



 

只是扩展:

while循环,与for循环基本一样,除了格式:

int i = 1;
while(i<11){
System.out.println(i);
i++;
}
while(true){ } //无限循环

do循环和其它循环不一样,主要两点:

1 do/while循环以分号;做结束,其它的循环以{ }做结束。
2 do/while循环先执行再判断条件,因此至少执行一次。

int i = 1;
do{
System.out.println(i);
i++;
}while(i<11);

 

 

 

 

return和break以及continue的区别

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