Java基础之流程控制语句

流程控制语句

流程控制,顾名思义在程序流程中进行控制操作。其实对于流程控制,大多数人在高中的数学中就见到过,只不过那个时候叫做“流程图”。 

Java中的流程控制语句按结构分为:顺序结构、选择结构、循环结构(不分先后顺序)。

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

     循环语句的组成:

–      初始化语句:

  • 一条或者多条语句,这些语句完成一些初始化操作。

–      判断条件语句:

  • 这是一个boolean 表达式,这个表达式能决定是否执行循环体。

–      循环体语句:

  • 这个部分是循环体语句,也就是我们要多次做的事情。

–      控制条件语句:

  • 这个部分在一次循环体结束后,下一次循环判断条件执行前执行。通过用于控制循环条件中的变量,使得循环在合适的时候结束。

1.顺序结构:

从上到下依次顺序

选择结构(if语句):

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

    执行流程:a. 首先计算关系表达式的值,看是true或者false

              b. 如果是true就执行语句体

              c. 如果是false就不执行语句体

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

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

              b. 如果是true就执行语句体1

              c. 如果是false就执行语句体2

       if语句格式1/2(主体代码):

int score = 85;
if(score > 90){
    System.out.println("奖励一个苹果");
}else{
    System.out.println("奖励一本五年高考三年模拟");
}

解析:该段代码的含义是,定义int型变量score并赋值85,进入if判断语句,首先对关系表达式(score>90)进行计算,如果score大于90那么输出"奖励一个苹果",否则输出"奖励一本五年高考三年模拟"。因为85<90,结果为false,进入下一个语句体并打印结果

运行结果:"奖励一本五年高考三年模拟"

if语句格式3:if(关系表达式1){语句体1}else if(关系表达式2){语句体2}else{语句体n}

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

              b. 如果是true就执行语句体1

              c. 如果是false,就继续计算关系表达式2的值,看其结果是true或者false

              d.如果是false就继续计算表达式3的是,依次类推

注:格式3一般是在需要多重判断的情况下使用

if语句格式3(主体代码):

1 int score = 85;
2 if(score > 90){
3     System.out.println("奖励一个苹果");
4 }else if(score > 70){
5     System.out.println("奖励一块橡皮");
6 }else{
7     System.out.println("奖励一本五年高考三年模拟");
8 }

解析:该段代码的含义是,定义int型变量score并赋值85,进入if判断语句,首先对关系表达式1(score > 90)进行计算,如果 score 值大于90,则输出“奖励一个苹果”,否则进入关系表达式2(score > 70)进行计算,如果score 是介于 70--90 之间,则输出“奖励一块橡皮”,如果成绩小于等于 70 ,则输出"奖励一本五年高考三年模拟"

运行结果:奖励一块橡皮

案例:

 1 String today = "周末";
 2 String weather = "晴朗";
 3 if(today.equals("周末")){
 4     if(weather.equals("晴朗")){
 5         System.out.println("去游乐场玩");
 6     }else{
 7         System.out.println("看电影");
 8     }
 9 }else{
10     System.out.println("在家写作业");
11 }

 运行结果:去游乐场玩

选择结构(switch语句):

switch(表达式){

    case值1:

            语句体1

            break;

case值1:

            语句体1

            break;

    …

    default:

            语句体n+1:

            break;

}

格式解释:

    表达式():byte short int char

            JDK5以后可以是枚举

            JDK7以后可以是字符串

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

    break:表示中断的意思,跳出该循环

    default:所有的值都不匹配的时候,就用default

执行流程:

  1. 首先计算表达式的值
  2. 拿着该表达式的值,依次和case后面的值进行比较,就执行对应的语句体,遇到break就结束
  3. 如果所有的case都不匹配,就执行语句体n+1

注:case语句下没有break,会导致case穿透

案例1(有break):

 1     int num = 1;
 2 switch (num) {
 3     case 1:
 4         System.out.println("奖励一部手机");
 5         break;
 6     case 2:
 7         System.out.println("奖励一个IPad");
 8         break;
 9     case 3:
10         System.out.println("奖励一顿美食");
11         break;
12         default:
13             System.out.println("做作业");
14 }

运行结果:奖励一部手机

案例2(无break):

 1 int num = 1;
 2 switch (num) {
 3     case 1:
 4         System.out.println("奖励一部手机");
 5         //break;
 6     case 2:
 7         System.out.println("奖励一个IPad");
 8         //break;
 9     case 3:
10         System.out.println("奖励一顿美食");
11         //break;
12         default:
13             System.out.println("做作业");
14 }
View Code

运行结果:

  奖励一部手机

  奖励一个IPad

  奖励一顿美食

  做作业

“穿透式的结果”

循环结构(for循环):

–       for(初始化语句;判断条件语句;控制条件语句) {

         循环体语句;

    }

–       执行流程

a:执行初始化语句

b:执行判断条件语句,看其结果是true还是false

–       如果是false,循环结束。

–       如果是true,继续执行。

c:执行循环体语句

d:执行控制条件语句

e:回到B继续

      案例1:

1 for(int i = 0;i < 5;i++){
2     System.out.println("我爱编程,更爱Java");
3 }
View Code

  解析:该段代码的含义是,初始化一个int型变量i,如果i < 5,就执行i++并打印出,我爱编程,更爱Java,直到不满足条件循环体执行结束

      运行结果:

我爱编程,更爱Java

我爱编程,更爱Java

我爱编程,更爱Java

我爱编程,更爱Java

我爱编程,更爱Java

值得注意的几点:

for 关键字后面括号中的三个表达式必须用 “;” 隔开,三个表达式都可以省略,但 “;” 不能省略。

    a. 省略“循环变量初始化”,可以在 for 语句之前由赋值语句进行变量初始化操作,如:

1 int i = 0;//变量i在for循环语句之前赋值
2 for(;i < 10;i++){//省略初始化变量
3     System.out.println("我爱编程,更爱Java");
4 }
View Code

  b. 省略“循环条件”,可能会造成循环将一直执行下去,也就是我们常说的“死循环”现象,如

1 for(int i = 0;;i++){//省略循环条件
2     System.out.println("我爱编程,更爱Java");
3 }
View Code

  注:对于死循环的情况,一般采取break方法强制结束循环

2、 for 循环变量初始化和循环变量变化部分,可以是使用 “,” 同时初始化或改变多个循环变量的值,如:

1 for(int i = 0,j = 5;i < 5;i++,j--){
2     System.out.println(i+"+"+j+"="+(i+j));
3 }
View Code

   运行结果:

        0+5=5

  1+4=5

  2+3=5

  3+2=5

  4+1=5

3、 循环条件部分可以使用逻辑运算符组合的表达式,表示复杂判断条件,但一定注意运算的优先级,如:

1 for(int i = 0;i < 10 && i !=5;i++){//省略循环条件
2     System.out.println(i);
3 }
View Code

运行结果:0  1  2  3  4

  这里可能会有疑问,大家可以复习一下&&的语法哦,同时呢希望大家自己可以写一些更复杂的表达式来加强自己的编程能力哦!

循环结构(while循环):

格式:

–       基本格式

                while(判断条件语句) {

                循环体语句;

   }   

–       扩展格式

                初始化语句;

                while(判断条件语句) {

                循环体语句;

                控制条件语句;

}

案例:

1 int i = 1;
2 while(i < 5){
3     System.out.println("我爱编程,更爱Java");
4     i++;
5 }
View Code

解析:该段代码的含义是,定义int型变量i并赋值1,进入条件语句,i < 5 并打印一次“我爱编程,更爱Java”,之后执行i++,依次循环下去直到I >= 5不能再次进入循环

运行结果:

  我爱编程,更爱Java

  我爱编程,更爱Java

  我爱编程,更爱Java

  我爱编程,更爱Java

循环结构(do…while循环):

格式:

–       基本格式

                 do {

                         循环体语句;

                    }while((判断条件语句);

–       扩展格式

                初始化语句;

                do {

                        循环体语句;

                         控制条件语句;

                    } while((判断条件语句);

   案例:

1 int i = 1;
2 do{
3     System.out.println("我爱编程,更爱Java");
4     i++;
5 }while (i <= 5);
View Code

循环结构(do…while循环):

 

格式:

–       基本格式

                 do {

                         循环体语句;

                    }while((判断条件语句);

–       扩展格式

                初始化语句;

                do {

                        循环体语句;

                         控制条件语句;

                    } while((判断条件语句);

   案例:

int i = 1;
do{
    System.out.println("我爱编程,更爱Java");
    i++;
}while (i <= 5);

解析:先执行一遍循环操作,然后判断循环条件是否成立,如果成立继续执行循环,直到不满足i<=5的判断条件

运行结果:

我爱编程,更爱Java

我爱编程,更爱Java

我爱编程,更爱Java

我爱编程,更爱Java

我爱编程,更爱Java

三种循环的差别

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

–       do…while循环至少会执行一次循环体。

–       for循环和while循环只有在条件成立的时候才会去执行循环体

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

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

跳转控制语句

      * break 中断:用于结束循环

案例:

1 for(int i = 0;i < 10;i++){
2    if((i > 1)&&(i % 2 == 0)){
3        break;
4    }
5     System.out.print(i+"	");
6 }
7 System.out.println("执行break之后,跳出循环,执行这句话");
View Code

 解析:使用循环输出 0--9的数值,其中,如果数值大于 1 ,并且为 2 的倍数则停止输出。

   运行结果:0   1     执行break之后,跳出循环,执行这句话

  *continue 继续:结束一次循环继续下一次循环

案例:

1 for(int i = 0;i < 10;i++){
2    if(i % 2 != 0){
3        continue;
4    }
5     System.out.print(i+"	");
6 }
View Code

解析:打印 0--9 之间所有的偶数,通过continue结束本次循环,执行下一次循环:

    运行结果:0  2   4   6   8

原文地址:https://www.cnblogs.com/belong-Mx/p/10837460.html