Day 007 顺序结构与选择结构-Java流程控制

Java流程控制

顺序结构

  • java的基本结构就是顺序结构,除非特别指明,否则就是按照顺序逐句执行
  • 顺序结构是最简单的算法结构。语句与语句之间,框与框之间是按从上到下的顺序进行的,他是由若干个依次执行的处理步骤组成的,是任何一个算法都离不开的一种基本算法结构。

image-20250916013226904

package com.feihong.struct;

public class ShunXuDemo {
    public static void main(String[] args) {

        System.out.println("hello1");
        System.out.println("hello2");
        System.out.println("hello3");
        System.out.println("hello4");
        System.out.println("hello5");
        
        /*
        程序会从上到下依次执行,按顺序输出:hello1、hello2、hello3、hello4、hello5
        顺序结构也是结构
        */

    }
}

选择结构*

if单选择结构

  • 需要判断一个事情是否满足条件再去执行,就可以用if语句来表示

  • 语法:

if(布尔表达式(=true不写就是默认的),即判断的条件){
   //如果布尔表达式为true即满足判断条件之后将执行的语句
}
//布尔表达式为false,即不满足判断条件则会直接跳过

image-20250916014228934

package com.feihong.struct;

import java.util.Scanner;

public class IfDemo01 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        System.out.println("请输入内容:");

        String s=scanner.nextLine();

        //equals:判断字符串是否相等
        if (s.equals("Hello")){

            System.out.println(s);

        }

        System.out.println("End");
        scanner.close();
    }
}

if双选择结构

  • 需要判断一个事情满足判断条件下执行一个命令或不满足判断条件下执行一个命令,需要有两个判断,就需要一个双选择结构,即if-else结构。
  • 语法:
if(布尔表达式){
  //如果布尔表达式=true执行的命令
}else{
  //如果布尔表达式=false执行的命令
}

image-20250916020533749

package com.feihong.struct;

import java.util.Scanner;

public class IfDemo02 {
    public static void main(String[] args) {
        //考试分数大于600就是及格,小于60分就不及格。

        Scanner scanner = new Scanner(System.in);

        System.out.println("请输入成绩:");

        double score =scanner.nextDouble();

        if (score>=60){

            System.out.println("及格");

        }else{

            System.out.println("不及格");

        }
    scanner.close();
    }
}

if多选择结构

  • 很多时候一个事情存在区间多级判断,比如成绩排名,10090是A,8970是B,69~60是C,60以下是D,这就需要一个多选择结构来处理这类问题!
  • 语法:
if(布尔表达式1){
  //如果布尔表达式1=true执行的命令
}else if(布尔表达式2){
  //如果布尔表达式2=true执行的命令
}else if(布尔表达式3){
  //如果布尔表达式3=true执行的命令
}else {
  //如果以上布尔表达式都为false执行的命令
}

image-20250916023929814

package com.feihong.struct;

import java.util.Scanner;

public class IfDemo03 {
    public static void main(String[] args) {

        Scanner scanner = new Scanner(System.in);

        System.out.println("请输入成绩:");

        double score=scanner.nextDouble();

        if (score<=100&&score>=90){
            System.out.println("成绩为A");
        } else if (score<90&&score>=80) {
            System.out.println("成绩为B");
        } else if (score<80&&score>=60) {
            System.out.println("成绩为C");
        } else if (score<60&&score>=0) {//逻辑要尽量严谨
            System.out.println("成绩为D");
        }else {//else语句必须有,且必须要在最后
            System.out.println("非法成绩");
        }

        scanner.close();    
    }
}

嵌套的if结构

  • 可以在一个if或者else if语句中使用另一个if或者else if语句。
  • 语法:
if(布尔表达式1){
  //如果布尔表达式1为true执行代码
  if(布尔表达式2){
    //如果布尔表达式2为true执行代码
  }
}

switch多选择结构

  • switch case语句也能够实现多选择结构,其判断一个变量与一系列值中某个值是否相等,每个值称为一个分支。
  • switch语句中的变量类型可以是:
    1. byte、short、int或者char。
    2. 从Java7开始switch支持字符串(String)类型了。同时case标签必须为字符串常量或字面量。
switch (expression){
            case value ://
                //语句
                break;//可选
            case value :
                //语句
                break;//可选
            //可以有任意数量的case语句
            default://可选,即其他值都不符合时,运行此项
                //语句
        }
package com.feihong.struct;

public class SwitchDemo01 {
    public static void main(String[] args) {

        //case穿透:没有加break的即使与值不相符也会执行   //switch在于匹配一个具体的值
        char grade='C';

        switch (grade){
            case'A':
                System.out.println("优秀");
                break;//grade为A,语句后加了break,运行到此终止,后面的不会显示。

            case'B':
                System.out.println("良好");
            case'C':
                System.out.println("及格");//grade为C,语句没有加brake,其他没加break的语句也会显示
            case'D':
                System.out.println("不及格");
            case'E':
                System.out.println("挂科");
            default:
                System.out.println("未知");
            /*
            char grade='C'时输出为:
            及格
            不及格
            挂科
            未知
            
            char grade='A'时输出为:
            优秀
            
            char grade='F'时输出为:
            未知
            */
        }

    }
}

所以如果只要匹配值输出的话,就要在每一句case语句后加上一个break。default语句就不需要加break了。

package com.feihong.struct;

public class SwitchDemo02 {
    public static void main(String[] args) {
        //字符的本质还是数字
        //反编译 Java-----class(字节码文件)-----反编译(idea就可以)
        String name="飞鸿";

        switch (name){
            case "阿碧":
                System.out.println("阿碧");
                break;
            case "罗锅":
                System.out.println("罗锅");
                break;
            case "飞鸿":
                System.out.println("飞鸿");
                break;
            default:
                System.out.println("都没有!");
        }
    }
}
//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by FernFlower decompiler)
//

package com.feihong.struct;

public class SwitchDemo02 {
    public SwitchDemo02() {
        super();
    }

    public static void main(String[] args) {
        switch ("\u98de\u9e3f") {
            case "\u963f\u78a7":
                System.out.println("\u963f\u78a7");
                break;
            case "\u7f57\u9505":
                System.out.println("\u7f57\u9505");
                break;
            case "\u98de\u9e3f":
                System.out.println("\u98de\u9e3f");
                break;
            default:
                System.out.println("\u90fd\u6ca1\u6709\uff01");
        }

    }
}

反编译后文档,可以看到字符串原理是将字符串转为hascode,即字符串的数字代码形式,然后进行比较,完全相同的就执行。

image-20250917004714724

image-20250918003021092

image-20250917005230912

image-20250917005009056

image-20250918003141385

posted on 2025-09-18 00:38  柴郡伊里奇  阅读(14)  评论(0)    收藏  举报