• 可能是2022最详细的【Java SE 】顺序结构、分支结构、循环结构讲解


    目录

    1.顺序结构

    2.分支结构

    2.1 if 语句

    【注意事项】

    分号问题

    悬空 else 问题

    2.2 switch 语句

    3.循环结构

    3.1 while 循环

    3.2 for 循环

    3.3 do while() 循环

    3.4 break语句

    3.5 continue 语句

    4.输入输出

    4.1 输出到控制台

    4.2 从键盘输入

    单组输入

    循环输入


    1.顺序结构

    顺序结构就是程序按照代码的书写顺序一步一步的执行。

    1. public static void main(String[] args) {
    2. int num = 10;
    3. char ch = 'a';
    4. double sum = 12.5;
    5. System.out.println(num);
    6. System.out.println(ch);
    7. System.out.println(sum);
    8. }

    代码结果:

    如果代码的顺序改变,输出的结果也改变了。

    1. public static void main(String[] args) {
    2. int num = 10;
    3. char ch = 'a';
    4. double sum = 12.5;
    5. System.out.println(num);
    6. System.out.println(sum);
    7. System.out.println(ch);
    8. }

    代码结果:

    2.分支结构

    2.1 if 语句

    语法格式1

    if(布尔表达式){
    // 语句
    }

    如果布尔表达式结果为true,执行if中的语句,否则不执行。
    比如:如果你笔试过了60分,就奖励你一个 offer。

    例1:

    1. public static void main(String[] args) {
    2. int score = 60;
    3. if (score >= 60) {
    4. System.out.println("奖励你一个offer");
    5. }
    6. }

    代码结果:

    语法格式2

    if(布尔表达式){
    // 语句1
    }else{
    // 语句2
    }

    如果布尔表达式结果为true,执行if中的语句,否则执行else中的语句。
    比如:如果你笔试过了60分,就奖励你一个 offer;不过就给你一个大逼do。

    例2:

    1. public static void main(String[] args) {
    2. int score = 59;
    3. if (score >= 60) {
    4. System.out.println("奖励你一个offer");
    5. }
    6. else {
    7. System.out.println("给你一个大逼do");
    8. }
    9. }

    代码结果:

    语法格式3

    if(布尔表达式1){
    // 语句1
    }else if(布尔表达式2){
    // 语句2
    }else{
    // 语句3
    }

    表达式1成立,执行语句1,否则表达式2成立,执行语句2,否则执行语句3。

    比如:家人们比腿长。

    1. 腿长在100cm以下的是小短腿。
    2. 腿长在100cm~110cm之间的是短腿。
    3. 腿长在110cm~120cm之间的是长腿。
    4. 腿长在120cm以上的是大长腿。
    1. public static void main(String[] args) {
    2. Scanner input = new Scanner(System.in);
    3. System.out.print("请输入家人腿的长度");
    4. int people = input.nextInt();//输入
    5. if (people < 100) {
    6. System.out.println("小短腿");
    7. } else if (people > 100 && people <= 110) {
    8. System.out.println("短腿");
    9. } else if (people > 110 && people <= 120) {
    10. System.out.println("长腿");
    11. }else {
    12. System.out.println("大长腿");
    13. }
    14. }

    代码结果:

    【注意事项】

    代码风格:

    1. //风格1 ---> 推荐
    2. int n = 100;
    3. if (n > 10) {
    4. //语句1
    5. }else {
    6. //语句2
    7. }
    8. //风格2 ---> 不推荐
    9. int n = 100;
    10. if (n > 10)
    11. {
    12. //语句1
    13. }else
    14. {
    15. //语句2
    16. }

    两种风格虽然都是合法的,但是风格1是Java语法风格,会显得代码更加紧凑。
     

    分号问题

    1. public static void main(String[] args) {
    2. int n = 10;
    3. if (n == 20);{
    4. System.out.println("hehe");
    5. }
    6. }

    此处多写了一个 分号, 导致分号成为了 if 语句的语句体, 而 { } 中的代码已经成为了和一个 if 无关的代码块

    代码结果:

    悬空 else 问题

    1. int x = 10;
    2. int y = 10;
    3. if (x == 10)
    4. if (y == 10)
    5. System.out.println("aaa");
    6. else
    7. System.out.println("bbb");

    if / else 语句中可以不加 大括号 ,但是也可以写语句(只能写一条语句)。 此时 else 是和最接近的 if 匹配。但是实际开发中我们 不建议 这么写。最好加上大括号。
     

    2.2 switch 语句

    基本语法

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

              default:
                     内容都不满足时执行语句;
                    break;       
    }

    执行流程

    1. 先计算表达式的值
    2. 和case依次比较,一旦有响应的匹配就执行该项下的语句,直到遇到break时结束
    3. 当表达式的值没有与所列项匹配时,执行default
    1. public static void main(String[] args) {
    2. int day = 1;
    3. switch(day) {
    4. case 1:
    5. System.out.println("星期一");
    6. break;
    7. case 2:
    8. System.out.println("星期二");
    9. break;
    10. case 3:
    11. System.out.println("星期三");
    12. break;
    13. case 4:
    14. System.out.println("星期四");
    15. break;
    16. case 5:
    17. System.out.println("星期五");
    18. break;
    19. case 6:
    20. System.out.println("星期六");
    21. break;
    22. case 7:
    23. System.out.println("星期日");
    24. break;
    25. default:
    26. System.out.println("输入有误");
    27. break;
    28. }
    29. }

    代码结果:

    【注意事项】
    多个case后的常量值不可以重复

    switch的括号内只能是以下类型的表达式:

    1. 基本类型:byte、char、short、int,注意不能是long类型
    2. 引用类型:String常量串、枚举类型
    3. break 不要遗漏, 否则会失去 "多分支选择" 的效果
    4. switch 不能表达复杂的条件
    5. switch 虽然支持嵌套, 但是很丑,一般不推荐~
       

    3.循环结构

    3.1 while 循环

    基本语法格式

    while(循环条件){
    循环语句;
    }
    循环条件为 true, 则执行循环语句; 否则结束循环

    代码示例1:打印十个整数1

    1. public static void main(String[] args) {
    2. int i = 10;
    3. while(i >= 0) {
    4. System.out.print(1+" ");
    5. i--;
    6. }
    7. }

    代码结果:

    代码示例2:打印1~100的和

    1. public static void main(String[] args) {
    2. int i = 1;
    3. int sum = 0;//累加的和
    4. while(i <= 100) {
    5. sum += i;
    6. i++;
    7. }
    8. System.out.println(sum);
    9. }

    代码结果: 

    【 注意事项】

    1. 和 if 类似, while 下面的语句可以不写 { } , 但是不写的时候只能支持一条语句. 建议还是加上 {}
    2. 和 if 类似, while 后面的 { 建议和 while 写在同一行.
    3. 和 if 类似, while 后面不要多写 分号, 否则可能导致循环不能正确执行.

    3.2 for 循环

    基本语法

    for(表达式①;布尔表达式②;表达式③){
    表达式④;
    }

    1. 表达式1: 用于初始化循环变量初始值设置,在循环最开始时执行,且只执行一次
    2. 表达式2: 循环条件,满则循环继续,否则循环结束
    3. 表达式3: 循环变量更新方式

    【执行过程】

    ①②③④--->②③④--->②③④--->②③④--->②③④--->②③④--->...--->②为false,循环结束。
     

    代码示例1:打印1~10之间的偶数

    1. public static void main(String[] args) {
    2. int num = 10;
    3. for (int i = 0; i <= num ; i++) {
    4. if (i % 2 == 0) {
    5. System.out.println(i);
    6. }
    7. }
    8. }

    代码结果:

    代码示例2:计算1~100的和

    1. public static void main(String[] args) {
    2. int sum = 0;
    3. for (int i = 1; i <= 100; i++) {
    4. sum += i;
    5. }
    6. System.out.println(sum);
    7. }

    代码结果:

    【 注意事项】(和while循环类似)

    1. 和 if 类似, for 下面的语句可以不写 { } , 但是不写的时候只能支持一条语句. 建议还是加上 { }
    2. 和 if 类似, for 后面的 { 建议和 while 写在同一行.
    3. 和 if 类似, for 后面不要多写 分号, 否则可能导致循环不能正确执行.
    4. 和while循环一样,结束单趟循环用continue,结束整个循环用break

    3.3 do while() 循环

    基本语法

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

    先执行循环语句, 再判定循环条件,循环条件成立则继续执行,否则循环结束
     

    代码示例:打印1~10的数字

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

    代码结果:

     【注意事项】

    1. do while 循环最后的分号不要忘记
    2. 一般 do while 很少用到, 更推荐使用 for 和 while

    3.4 break语句

    功能是让代码提前结束。

    代码示例:打印1000~2000之间的第一个闰年

    1. public static void main(String[] args) {
    2. int year = 1000;
    3. while(year <= 2000) {
    4. if ((year % 4 != 0 && year % 100 == 0)|| year % 400 == 0 ) {
    5. System.out.println(year);
    6. break;
    7. }
    8. year++;
    9. }
    10. }

    代码结果:

     程序执行到break就会停止。

    3.5 continue 语句

    continue的作用是跳过本次循环,立即执行下一次循环。

    代码示例:找到 100 - 200 中所有 3 的倍数

    1. public static void main(String[] args) {
    2. int num = 100;
    3. while (num <= 200) {
    4. if (num % 3 != 0) {
    5. num++; // 这里的 ++ 不要忘记! 否则会死循环.
    6. continue;
    7. }
    8. System.out.println("找到了 3 的倍数, 为:" + num);
    9. num++;
    10. }
    11. }

    执行到 continue 语句的时候, 就会立刻进入下次循环(判定循环条件), 从而不会执行到下方的打印语句。
     

    4.输入输出

    4.1 输出到控制台

    1. public static void main(String[] args) {
    2. System.out.println("abc");
    3. System.out.print("123");
    4. System.out.printf("%s","456");
    5. }

    代码结果:

     println 输出默认不换行,print 输出默认换行,printf 是指定格式的输出。

    println 比较万能,所以用的最多的是println。

    4.2 从键盘输入

    单组输入

     代码演示

    1. public static void main(String[] args) {
    2. Scanner input = new Scanner(System.in);
    3. System.out.println("请输入一个值:");
    4. int num = input.nextInt();
    5. System.out.println("数值是" + num);
    6. }

    代码结果:

     

    循环输入

    下面来实现循环输入年龄

    1. public static void main(String[] args) {
    2. Scanner input = new Scanner(System.in);
    3. while(input.hasNextInt()) {
    4. int age = input.nextInt();
    5. System.out.println("年龄:" + age);
    6. }
    7. }

    代码结果:

     程序会一直执行下去,如果想要结束,就点击Ctrl+d。

    hasNextInt()表示循环输入的是整形,如果要输入其他类型的,这里就要有所改变。
    
    hasNextLine()表示字符串类型、hasNextByte()表示字节类型、hasNextBoolean()表示布尔类型.
  • 相关阅读:
    浅淡 C++ 与 C++ 入门
    yolov5 OpenVINO windows部署实战
    LeetCode 面试题 03.01. 三合一
    JRS303-数据校验
    第2章 Linux多进程开发 2.18 内存映射
    GTA5需要什么配置?
    Java SPI 机制源码级深度理解
    SpringBoot笔记——登录
    牛客《算法入门》链表(题解C++)
    用Python字典简单实现词频统计
  • 原文地址:https://blog.csdn.net/m0_63033419/article/details/126063861