• java基础讲义03


    一 流程控制

    1.1流程控制语句介绍

    一个java程序有很多条语句组成,流程控制语句是用来控制程序中的各语句执行的顺序,通过流程语句控制让
    程序执行顺序达到我们想要实现的功能。
    其流程控制方式采用结构化程序设计中规定的三种基本流程结构:
    顺序结构
    选择结构
    循环结构

    在这里插入图片描述

    1.2顺序结构

    顺序结构介绍

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

    public static void main(String[] args){
    	System.out.println("买菜");
    	System.out.println("摘菜");
    	System.out.println("洗菜");
    	System.out.println("切菜");
    	System.out.println("配菜");
    	System.out.println("炒菜");
    	System.out.println("吃饭");
    	System.out.println("吃完了");
    	System.out.println("锅和碗一起扔了,就可以不用洗了O(∩_∩)O");
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    二 选择控制

    2.1 选择结构介绍

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

    2.2 选择语句if

    2.2.1 格式1

    if(逻辑表达式或boolean类型的值){
    语句体;
    }
    
    • 1
    • 2
    • 3

    先计算比较表达式的值,看其返回值是true还是false。
    true:行语句体
    false:不执行语句体

    流程图:
    在这里插入图片描述

    //判断两个变量是否相同
    public static void main(String[] args){
    // 定义两个变量
    int a = 1;
    int b = 2;
    //判断两个变量是否相等
    if (a == b){
    System.out.println("a等于b");
    }
    System.out.println("程序运行完毕!");
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    1.比较表达式无论简单还是复杂,结果必须是boolean类型
    2.if语句控制的语句体如果是一条语句,大括号可以省略;如果是多条语句,就不能省略。建议永远不要省略。

    2.2.2 if格式2

    if(比较表达式) {
    语句体1;
    }else {
    语句体2;
    }

    首先计算比较表达式的值,看其返回值是true还是false。
    true:执行语句体1
    false:执行语句体2

    流程图:
    在这里插入图片描述
    判断一个数是奇数还是偶数

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

    三元格式:

    boolean flag = a % 2 == 0 ? true : false
    
    • 1

    2.2.3 if格式3

    if(比较表达式1) {
    语句体1;
    }else if(比较表达式2) {
    语句体2;
    }else if(比较表达式3) {
    语句体3;
    }

    else {
    语句体n+1;
    }

    执行流程

    首先计算比较表达式1看其返回值是true还是false,
    如果是true,就执行语句体1,if语句结束。
    如果是false,接着计算比较表达式2看其返回值是true还是false,
    如果是true,就执行语句体2,if语句结束。
    如果是false,接着计算比较表达式3看其返回值是true还是false,

    如果都是false,就执行语句体n+1。
    注意事项: 当只要有一个条件满足时,if语句结束。else是可以省略,但是不建议省略。
    首先判断关系表达式1看其结果是true还是false
    true:执行语句体1,if语句结束
    false:继续判断关系表达式2看其结果是true还是false
    true:执行语句体2,if语句结束
    false:就继续判断关系表达式…看其结果是true还是false
    false:执行语句体n+1

    流程图:
    在这里插入图片描述
    案例

    判断学生成绩等级
    90~100 优秀
    80~89 良
    70~79 中
    60~69 及格
    0~59 差

    int score = 80;
    if( score >= 90 && score <= 100 ){
    System.out.println("优秀") ;
    }else if(score >= 80 && score <= 89 ){
    System.out.println("良") ;
    }else if(score >= 70 && score <= 79 ){
    System.out.println("中") ;
    }else if(score >= 60 && score <= 69 ){
    System.out.println("及格") ;
    }else {
    System.out.println("你真的好差,简直差得一匹啊!o(╥﹏╥)o") ;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    2.3 选择语句switch

    2.3.1 switch语句介绍

    一个 switch 语句允许测试一个变量等于多个值时的情况。每个值称为一个case,且被测试的变量会对每个switch case 进行检查。

    switch语句格式

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

    default:
    语句体 n + 1 ;
    break ;
    }
    1.switch表示这是switch语句
    表达式的取值:byte,short,int,char
    JDK5以后可以是枚举(什么是枚举,以后再讲)
    JDK7以后可以是String
    2.case后面跟的是要和表达式进行比较的值
    3.语句体部分可以是一条或多条语句
    4.break表示中断,结束的意思,可以结束switch语句
    5.default语句表示所有情况都不匹配的时候,就执行该处的内容,和if语句的else相似

    执行流程

    先计算表达式的值,依次和case后面的值进行比较,如果匹配成功就是case中的语句体,遇到break结束。
    如果和所有的case后面的值都不能匹配成功,就执行default中的语句体后结束程序。

    流程图
    在这里插入图片描述
    案例

     public static void main(final String[] args) {
            final int a = 2;
            /**
    星期二
    星期三
    星期四
    星期五
    星期六*/
            switch (a) {
                case 1:
                    System.out.println("星期一");
    
                case 2:
                    System.out.println("星期二");
    
                case 3:
                    System.out.println("星期三");
    
                case 4:
                    System.out.println("星期四");
    
                case 5:
                    System.out.println("星期五");
    
                case 6:
                    System.out.println("星期六");
            }
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28

    2.3.2 switch注意事项

    1.case后面只能是常量,不能是变量,而且,多个case后面的值不能出现相同的
    2.default可以省略吗?
    可以省略,但是不建议,因为它的作用是对不正确的情况给出提示。
    3.break可以省略吗?
    可以省略,但是结果可能不是我们想要的。
    会出现一个现象:case穿透。
    最终我们建议不要省略
    4.default一定要在最后吗?
    不是,可以在任意位置。但是建议在最后。
    5.switch语句的结束条件
    遇到break就结束
    执行到末尾就结束

    2.3.3 switch面试题

    byte可以作为switch的表达式吗? 可以
    long可以作为switch的表达式吗? 不可以
    String可以作为switch的表达式吗? 可以

    2.3.4 if语句与switch语句区别

    在做判断的时候,我们有两种选择,if语句和switch语句,那么,我们到底该如何选择使用那种语句呢?

    if语句使用场景:
    针对结果是boolean类型的判断
    针对一个范围的判断
    针对几个常量值的判断
    switch语句使用场景:
    针对几个常量值的判断

    三 循环语句

    3.1 循环语句介绍及分类

    循环语句介绍

    循环语句的作用是可以让一段代码(语句)重复执行,重复执行的次数可以根据需求进行控制。

    循环语句分类

    for循环
    while循环
    do…while循环

    3.2 for循环

    for循环格式

    for(初始化表达式语句;判断条件语句;控制条件语句) {
    循环体语句;
    }

    执行流程

    1.先执行初始化表达式语句,只会执行一次
    2.执行判断条件语句,看其返回值是true还是false
    如果是true,就继续执行
    如果是false,就结束循环
    3.执行循环体语句;
    4.执行控制条件语句
    5.继续判断条件语句

    在这里插入图片描述
    判断1949到2022有多少个闰年(4年一闰,百年不闰;400年一闰)

    public static void main(final String[] args) {
            int num = 0;
            for (int a = 1949; a <= 2022; a++) {
                if (a % 4 == 0 && a % 100 != 0 || a % 400 == 0) {
                    num += 1;
                } else {
                    continue;
                }
            }
            System.out.println("一共有" + num + "闰年");
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    3.3 循环语句while

    while语句格式

    初始化条件语句;
    while(判断条件语句) {
    循环体语句;
    控制条件语句;
    }

    while执行流程

    a:执行初始化条件语句;
    b:执行判断条件语句,看其返回值是true还是false
    如果是true,就继续执行
    如果是false,就结束循环
    c:执行循环体语句;
    d:执行控制条件语句
    e:回到b继续

    在这里插入图片描述
    循环输出10次helloworld

    int x = 1 ;
    // 使用while循环
    while( x <= 10 ){
    System.out.println("HelloWorld!") ;
    x++ ;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    3.4 循环语句do…while

    do…while格式

    初始化条件语句;
    do {
    循环体语句;
    控制条件语句;
    }while(判断条件语句);

    执行流程

    执行初始化条件语句;
    执行循环体语句;
    执行控制条件语句;
    执行判断条件语句,看其返回值是true还是false
    true,就继续执行
    false,就结束循环

    流程图
    在这里插入图片描述
    循环输出10次Helloworld

    int y = 1 ;
    do {
    System.out.println("HelloWorld") ;
    y++ ;
    }while( y <= 3) ;
    
    • 1
    • 2
    • 3
    • 4
    • 5

    3.5 循环语句区别

    1.do…while循环至少执行一次循环体。
    而for,while循环必须先判断条件是否成立,然后决定是否执行循环体语句。
    2.如果你想在循环结束后,继续使用控制条件的那个变量,用while循环,否则用for循环。不知道改用谁优
    先用for循环。
    因为for循环中变量及早的从内存中消失,可以提高内存的使用效率。
    while循环的变量是定义在类里面的,需要等整个类执行完后,变量才会消失;当然for循环的变量也可以定义到类里面,建议定义在for循环里面
    3.建议优先考虑for循环,然后是while循环 ,最后是do…while循环

    3.6 多重循环语句

    3.6.1 多重循环介绍

    循环里面还有循环,如for循环中且套for循环或且套while循环等。
    总循环次数 = 外循环次数 * 内循环次数
    格式:
    for(初始化表达式;条件判断表达式;控制条件表达式){
    for(初始化表达式;条件判断表达式;控制条件表达式){
    }
    }

    3.6.1 多重循环案例

    九九乘法表

    public static void main(final String[] args) {
            for (int i = 0; i <= 9; i++) {
                for (int j = 0; j <= i; j++) {
                    final int num = i * j;
                    System.out.print(i + "*" + j + "=" + num + " ");
                }
                System.out.println();
            }
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    在这里插入图片描述
    如何理解多重for循环的过程

    分析九九乘法表的执行流程
    1.执行int i=0;i<=9;满足条件,进入第一层for循环里面;
    2.(当在语句体里面的第一句不是for循环,则执行那句话,按着顺序执行的流程)执行int j=0;j<=i,满足条件,进入第二层for循环里面;
    3.执行第二层for循环里面的语句,直到不满足条件为止,跳出第二层for循环;
    4.第一层for循环执行控制条件语句,继续判断第一层

    总结,进入第二层for循环后,需一直执行到第二层for循环不满足条件为止才跳出第二层for循环,继续接下来的流程

    3.7 死循环语句

    死循环介绍

    判断条件语句的结果永远都为true,那么循环体会一直无休止的执行下去。
    死循环可能导致系统资源占用过高及系统全盘崩溃。
    简单理解:判断条件一直为true

    while(true){...}
    for(;;){...}
    
    • 1
    • 2

    3.8 控制跳转语句

    3.8.1 控制语句介绍

    什么是控制语句

    控制语句的目的是为了控制程序跳转、中断等操作,goto是java中保留字目前还不能用,但java中提供了
    break、continue、return来实现控制语句的跳转和中断。

    控制跳转语句的分类

    break:
    中断,结束单层循环,是单层
    continue
    继续,结束本次循环继续下一次循环
    return
    返回,结束方法执行
    1.break和continue关键字不影响for循环后面的语句执行
    2.return是结束当前方法,for循环结束同时整个方法也结束了,一般程序会将return放在最后

    3.8.2 案例演示

    break演示

    for(int x = 1 ; x <= 10 ; x++){
    	if(x == 3){
    	break ;
    	}
    	System.out.println("HelloWorld") ;//第一次能被3整除的时候,这条语句不会执行,整个for循环结束
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    continue演示

    for(int x = 1; x <= 10; x++) {
    	if( x % 3 == 0) {
    	continue;
    	}
    	System.out.println("HelloWorld");//能被3整除的时候,这条语句就不会执行
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    return演示

    for(int x = 1; x <= 10; x++) {
    if( x % 3 == 0) {
    return;
    }
    System.out.println("HelloWorld");//第一次能被3整除的时候,这条语句不会执行,整个for循环结束,整个方法也结束
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
  • 相关阅读:
    【Linux】Shell脚本详解
    Snowflake(雪花算法),什么情况下会冲突?
    《算法导论》16.2 贪心算法原理
    企微SCRM营销平台MarketGo-ChatGPT助力私域运营
    HarmonyOS应用开发Web组件基本属性应用和事件
    windows下node升级版本(亲测有效)
    Flink系列之Flink中RestartStrategy重启策略和FailoverStrategy故障转移策略
    【OpcUA开发笔记 3】Open62541证书登录方式
    算法----数组常见知识点
    数据库系统工程师------流水线
  • 原文地址:https://blog.csdn.net/qq_37974765/article/details/128131468