Java基础:流程控制语句

「爱情、让人受尽委屈。」 2024-03-31 12:22 146阅读 0赞

第一章 流程控制

1.1 概述

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

1.2 顺序结构

  1. public static void main(String[] args){
  2. //顺序执行,根据编写的顺序,从上到下运行
  3. System.out.println(1);
  4. System.out.println(2);
  5. System.out.println(3);
  6. }

在这里插入图片描述

第二章 判断语句

2.1 判断语句1–if

if语句第一种格式: if

  1. if(关系表达式){
  2. 语句体;
  • 执行流程

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

在这里插入图片描述

  1. public static void main(String[] args){
  2. System.out.println("开始");
  3. // 定义两个变量
  4. int a = 10;
  5. int b = 20;
  6. //变量使用if判断
  7. if (a == b){
  8. System.out.println("a等于b");
  9. }
  10. int c = 10;
  11. if(a == c){
  12. System.out.println("a等于c");
  13. }
  14. System.out.println("结束");

在这里插入图片描述

2.2 判断语句2–if...else

  • if语句第二种格式: if...else

    if(关系表达式) {

    1. 语句体1;

    }else {

    1. 语句体2;

    }

  • 执行流程

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

在这里插入图片描述

  1. public static void main(String[] args){
  2. // 判断给定的数据是奇数还是偶数
  3. // 定义变量
  4. int a = 1;
  5. if(a % 2 == 0) {
  6. System.out.println("a是偶数");
  7. } else{
  8. System.out.println("a是奇数");
  9. }
  10. System.out.println("结束");
  11. }

在这里插入图片描述

2.3 判断语句3–if..else if...else

  • if语句第三种格式: if...else if ...else

    if (判断条件1) {

    1. 执行语句1;

    } else if (判断条件2) {

    1. 执行语句2;

    }

    }else if (判断条件n) {

    1. 执行语句n;

    } else {

    1. 执行语句n+1;

    }

  • 执行流程

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

在这里插入图片描述

  1. public static void main(String[] args) {
  2. // x和y的关系满足如下:
  3. // x>=3 y = 2x + 1;
  4. //‐1<=x<3 y = 2x;
  5. // x<=‐1 y = 2x – 1;
  6. // 根据给定的x的值,计算出y的值并输出。
  7. // 定义变量
  8. int x = 5;
  9. int y;
  10. if (x >= 3) {
  11. y = 2 * x + 1;
  12. } else if (x >= -1 && x < 3) {
  13. y = 2 * x;
  14. } else {
  15. y = 2 * x - 1;
  16. }
  17. System.out.println("y的值是:" + y);
  18. }

在这里插入图片描述

2.4 语句练习

  • 指定考试成绩,判断学生等级

    • 90-100 优秀
    • 80-89 好
    • 70-79 良
    • 60-69 及格
    • 60以下 不及格

    public static void main(String[] args) {

    1. int score = 100;
    2. if(score<0 || score>100){
    3. System.out.println("你的成绩是错误的");
    4. }else if(score>=90 && score<=100){
    5. System.out.println("你的成绩属于优秀");
    6. }else if(score>=80 && score<90){
    7. System.out.println("你的成绩属于好");
    8. }else if(score>=70 && score<80){
    9. System.out.println("你的成绩属于良");
    10. }else if(score>=60 && score<70){
    11. System.out.println("你的成绩属于及格");
    12. }else {
    13. System.out.println("你的成绩属于不及格");
    14. }

    }

在这里插入图片描述

2.5 if语句和三元运算符的互换

在某些简单的应用中,if语句是可以和三元运算符互换使用的。

  1. public static void main(String[] args) {
  2. int a = 10;
  3. int b = 20;
  4. //定义变量,保存a和b的较大值
  5. int c;
  6. if(a > b) {
  7. c = a;
  8. } else {
  9. c = b;
  10. }
  11. //可以上述功能改写为三元运算符形式
  12. c = a > b ? a:b;
  13. }

在这里插入图片描述

第三章 选择语句

3.1 选择语句–switch

  • switch语句格式:

    switch(表达式) {

    1. case 常量值1:
    2. 语句体1;
    3. break;
    4. case 常量值2:
    5. 语句体2;
    6. break;
    7. ...
    8. default:
    9. 语句体n+1;
    10. break;

    }

  • 执行流程

    • 首先计算出表达式的值
    • 其次,和case依次比较,一旦有对应的值,就会执行相应的语句,在执行的过程中,遇到break就会结束。
    • 最后,如果所有的case都和表达式的值不匹配,就会执行default语句体部分,然后程序结束掉。

在这里插入图片描述

  1. public static void main(String[] args) {
  2. //定义变量,判断是星期几
  3. int weekday = 6;
  4. //switch语句实现选择
  5. switch(weekday) {
  6. case 1:
  7. System.out.println("星期一");
  8. break;
  9. case 2:
  10. System.out.println("星期二");
  11. break;
  12. case 3:
  13. System.out.println("星期三");
  14. break;
  15. case 4:
  16. System.out.println("星期四");
  17. break;
  18. case 5:
  19. System.out.println("星期五");
  20. break;
  21. case 6:
  22. System.out.println("星期六");
  23. break;
  24. case 7:
  25. System.out.println("星期日");
  26. break;
  27. default:
  28. System.out.println("你输入的数字有误");
  29. break;
  30. }
  31. }

在这里插入图片描述

switch语句中,表达式的数据类型,可以是byteshortintcharenum(枚举),JDK7后可以接收字符串。

3.2 case的穿透性

switch语句中,如果case的后面不写break,将出现穿透现象,也就是不会在判断下一个case的值,直接向后运行,直到遇到break,或者整体switch结束。

  1. public static void main(String[] args) {
  2. int i = 5;
  3. switch (i){
  4. case 0:
  5. System.out.println("执行case0");
  6. break;
  7. case 5:
  8. System.out.println("执行case5");
  9. case 10:
  10. System.out.println("执行case10");
  11. default:
  12. System.out.println("执行default");
  13. }
  14. }

在这里插入图片描述

上述程序中,执行case5后,由于没有break语句,程序会一直向后走,不会在判断case,也不会理会break,直接运行完整体switch

由于case存在穿透性,因此初学者在编写switch语句时,必须要写上break

第四章 循环语句

4.1 循环概述

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

4.2 循环语句1–for

for循环语句格式:

  1. for(初始化表达式①; 布尔表达式②; 步进表达式④){
  2. 循环体③
  3. }
  • 执行流程

    • 执行顺序:①②③④>②③④>②③④…②不满足为止。
    • ①负责完成循环变量初始化
    • ②负责判断是否满足循环条件,不满足则跳出循环
    • ③具体执行的语句
    • ④循环后,循环条件所涉及变量的变化情况

在这里插入图片描述

  1. public static void main(String[] args) {
  2. //控制台输出5次HelloWorld,不使用循环
  3. System.out.println("HelloWorld");
  4. System.out.println("HelloWorld");
  5. System.out.println("HelloWorld");
  6. System.out.println("HelloWorld");
  7. System.out.println("HelloWorld");
  8. System.out.println("‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐");
  9. //用循环改进,循环5次
  10. //定义变量从0开始,循环条件为<5
  11. for(int x = 0; x < 5; x++) {
  12. System.out.println("HelloWorld"+x);
  13. }
  14. }

在这里插入图片描述

循环练习:使用循环,计算1-100之间的偶数和

  1. public static void main(String[] args) {
  2. //1.定义一个初始化变量,记录累加求和,初始值为0
  3. int sum = 0;
  4. //2.利用for循环获取1‐100之间的数字
  5. for (int i = 1; i <= 100; i++) {
  6. //3.判断获取的数组是奇数还是偶数
  7. if(i % 2==0){
  8. //4.如果是偶数就累加求和
  9. sum += i;
  10. }
  11. }
  12. //5.循环结束之后,打印累加结果
  13. System.out.println("sum:"+sum);
  14. }

在这里插入图片描述

4.3 循环语句2–while

while循环语句格式:

  1. 初始化表达式①
  2. while(布尔表达式②){
  3. 循环体③
  4. 步进表达式④
  5. }
  • 执行流程

    • 执行顺序:①②③④>②③④>②③④…②不满足为止。
    • ①负责完成循环变量初始化。
    • ②负责判断是否满足循环条件,不满足则跳出循环。
    • ③具体执行的语句。
    • ④循环后,循环变量的变化情况。

在这里插入图片描述

while循环输出10次HelloWorld

  1. public static void main(String[] args) {
  2. //while循环实现打印10次HelloWorld
  3. //定义初始化变量
  4. int i = 1;
  5. //循环条件<=10
  6. while(i<=10){
  7. System.out.println("HelloWorld");
  8. //步进 i++;
  9. i ++;
  10. }
  11. }

在这里插入图片描述

while循环计算1-100之间的和

  1. public static void main(String[] args) {
  2. //使用while循环实现
  3. //定义一个变量,记录累加求和
  4. int sum = 0;
  5. //定义初始化表达式
  6. int i = 1;
  7. //使用while循环让初始化表达式的值变化
  8. while(i<=100){
  9. //累加求和
  10. sum += i ;
  11. //步进表达式改变变量的值
  12. i ++;
  13. }
  14. //打印求和的变量
  15. System.out.println("1‐100的和是:"+sum);
  16. }

在这里插入图片描述

4.4 循环语句3–do...while

do...while循环格式

  1. 初始化表达式①
  2. do{
  3. 循环体③
  4. 步进表达式④
  5. }while(布尔表达式②);
  • 执行流程

    • 执行顺序:①③④>②③④>②③④…②不满足为止。
    • ①负责完成循环变量初始化。
    • ②负责判断是否满足循环条件,不满足则跳出循环。
    • ③具体执行的语句
    • ④循环后,循环变量的变化情况

在这里插入图片描述

输出10次HelloWorld

  1. public static void main(String[] args) {
  2. int x = 1;
  3. do {
  4. System.out.println("HelloWorld");
  5. x ++;
  6. }while(x<=10);
  7. }

在这里插入图片描述

do...while循环的特点:无条件执行一次循环体,即使我们将循环条件直接写成false,也依然会循环一次。这样的循环具有一定的风险性,因此初学者不建议使用do...while循环。

  1. public static void main(String[] args){
  2. do{
  3. System.out.println("无条件执行一次");
  4. }while(false);
  5. }

在这里插入图片描述

4.5 循环语句的区别

forwhile的小区别:

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

4.6 跳出语句

break

  • 使用场景:终止switch或者循环

    • 在选择结构switch语句中
    • 在循环语句中
    • 离开使用场景的存在是没有意义的

    public static void main(String[] args) {

    1. for (int i = 1; i<=10; i++) {
    2. //需求:打印完两次HelloWorld之后结束循环
    3. if(i == 3){
    4. break;
    5. }
    6. System.out.println("HelloWorld"+i);
    7. }

    }

在这里插入图片描述

continue

使用场景:结束本次循环,继续下一次的循环

  1. public static void main(String[] args) {
  2. for (int i = 1; i <= 10; i++) {
  3. //需求:不打印第三次HelloWorld
  4. if(i == 3){
  5. continue;
  6. }
  7. System.out.println("HelloWorld"+i);
  8. }
  9. }

在这里插入图片描述

第五章 扩展知识点

5.1 死循环

死循环:也就是循环中的条件永远为true,死循环的是永不结束的循环。例如:while(true){}。 在后期的开发中,会出现使用死循环的场景,例如:我们需要读取用户输入的输入,但是用户输入多少数据我们并不清楚,也只能使用死循环,当用户不想输入数据了,就可以结束循环了,如何去结束一个死循环呢,就需要使用到跳出语句了。

5.2 嵌套循环

所谓嵌套循环,是指一个循环的循环体是另一个循环。比如for循环里面还有一个for循环,就是嵌套循环。总共的循环次数=外循环次数*内循环次数

嵌套循环格式

  1. for(初始化表达式①; 循环条件②; 步进表达式⑦) {
  2. for(初始化表达式③; 循环条件④; 步进表达式⑥) {
  3. 执行语句⑤;
  4. }
  5. }

嵌套循环执行流程:

  • 执行顺序:①②③④⑤⑥>④⑤⑥>⑦②③④⑤⑥>④⑤⑥

    • 外循环一次,内循环多次。
    • 比如跳绳:一共跳5组,每组跳10个。5组就是外循环,10个就是内循环。

练习:使用嵌套循环,打印5*8的矩形

  1. public static void main(String[] args) {
  2. //5*8的矩形,打印5行*号,每行8个
  3. //外循环5次,内循环8次
  4. for(int i = 0; i < 5; i++){
  5. for(int j = 0; j < 8; j++){
  6. //不换行打印星号
  7. System.out.print("*");
  8. }
  9. //内循环打印8个星号后,需要一次换行
  10. System.out.println();
  11. }

在这里插入图片描述

发表评论

表情:
评论列表 (有 0 条评论,146人围观)

还没有评论,来说两句吧...

相关阅读