当前位置: 首页 > news >正文

Java流程控制04——if选择结构(本文为个人学习笔记,内容整理自哔哩哔哩UP主【遇见狂神说】的公开课程。 > 所有知识点归属原作者,仅作非商业用途分享)

Java流程控制04——if选择结构

选择结构分为:

  • if单选择结构
  • if双选择结构
  • if多选择结构
  • 嵌套的if结构
  • switch多选择结构

if单选结构

  • 在生活中很多时候需要取判断一个东西是否可行,然后我们才去执行,这样一个过程在程序中用if语句表示。
  • 语法:
if(布尔表达式){//如果布尔表达式为true将执行语句//若为false将跳过语句(不执行)
}
  • 图解:

    在这里插入图片描述

//导入Scanner包
import java.util.Scanner;public class if单结构{    public static void main(String[] args){//创建一个Scanner工具Scanner scanner = new Scanner(System.in);//创建变量名,以及使用Scanner方法String s = scanner.nextLine();//使用if单选结构。其中equals:判断字符串是否相等//判断输入结果是否是hello//如果不是会越过if内的内容,往后运行//如果是会先运行if的内容,然后按照循序结构依次从上到下运行if(s.equals("hello")){System.out.println("s");}System.out.println("End");scanner.close();}}
  • 在IDEA上实操及注意事项:

    • 输入相同的数据
      在这里插入图片描述
  • 输入不同的数据

在这里插入图片描述

注意事项:

    1. 由两张图可知:
      • 不管输入的是否相等,都会按照顺序结构依次运行到最后Scanner变量名.close()
      • 相等的时候:会运行if内的内容
      • 不相等的时候:会跳过if内的内容

equals

  • equals是一个方法(函数),用于比较两个对象的内容或值是否在逻辑上"相等"

  • 它的目的是检查两个不同的对象实例所包含的数据是相同,而不是检查它们是否是内存中的同一个对象。

    • equals与==的根本区别
    特性==操作符.equals()方法
    比较目标对象的引用(内存地址)对象的内容(值)
    本质检查两个变量是否指向同一个对象检查两个不同对象的内容是否逻辑相等
    比喻比较两个身份证号码是否完全一样(是同一个人)比较两个人(不同身份证)的姓名、年龄等是否相同(是双胞胎码?)
    适用类型适用于所有基本数据类型(String、int、float、double)和对象引用主要用于对象(不是基本数据类型)
  • 总结:

    1. equals:
      • 作用于对象则:只支持Scanner方法中的(next和nextLine)
        • 所以定义变量类型时只支持:String(字符串类型)
      • Scanner方法中的(nextInt、nextDouble、nextBoolean、nextFloat……)基本数据类型无法使用
        • 所以当定义的变量类型为:byte、short、int、long、float、double等的基本数据类型时,会报错无法使用
  • 再IDEA上实操及总结

    • 使用Scanner方法:next()和nextLine()——对应的变量类型String

在这里插入图片描述

在这里插入图片描述

    • 使用Scanner方法:nextInt()、nextDouble()——对应的变量类型(int、double)

在这里插入图片描述

在这里插入图片描述

  • 总结[再equals()方法当中]:
    • 由以上4张图可见;
      • 定义基本数据类型(int、double、Boolean……)以及对应的Scanner方法会报错。
      • 定义String类型以及对应的Scanner方法next()、nextLine()正常运行

if双选择结构

  • if双选择结构也通常称为(if-else语句),它是一种基本的程序控制流程结构。
  • 它根据一个条件的"真"(True)或"假"(false),从两个可能的代码路径中选择且仅选择一条来执行。
  • 它的核心逻辑是:“如果条件成立,则做A;否则,就做B”
  • 核心就是二选一:
    • 如果条件为真(true),则执行if代码块中的语句("A"部分),执行完毕后跳过else代码块,继续执行后面的程序。
    • 如果条件为假(false),则跳过if代码块,转去执行else代码块中的语句("B"部分),然后继续执行后面的程序。
  • 流程图:

在这里插入图片描述

语法:

if(布尔表达式){//如果布尔表达式的值为true
}else{//如果布尔表达式为false
}
  • 实操

    //导入Scanner方法
    import java.util.Scanner;public class if双结构实操{public static void main(String[] args){//任务写一个考试分数大于60分及格,小于60分就不及格的流程程序Scanner scanner=new Scanner(System.in);System.out.println("请输入考试成绩:");int Score = scanner.nextInt();//运用if表达式//Score(成绩)>60,运行if代码块if(Score>60){System.out.println("及格");}else{//否则Score≤60,运行else代码块System.out.println("不及格");}scanner.close();/*最后输出的结果与输入的值挂钩1.当输入符合的条件时,会运行if代码块,而不会运行else代码块;2.当输入不符合的条件时,会跳过if代码块,运行else代码块;3.但最后,都会运行到结尾*/}
    }
    
  • 在IDEA运行及总结

在这里插入图片描述

在这里插入图片描述

总结:

  1. 如图所示:
    • 输入符合条件,运行if代码块
    • 输入不符合条件,运行else代码块
  2. 注意:
    • 不管是符合还是不符合,都会按照顺序结构,从上到下,依次运行代码到最后。
特性描述
名称if双选择结构、if-else语句
目的根据一个条件的真假,在两条互斥的代码路径中选择一条执行
执行逻辑非此即彼,二选一。必定会执行其中一个分支,且只执行一个
关键字if、else
与单选择区别单选择结构(只有if)在条件为假时什么都不做,直接跳过;双选择结构在条件为假时也有对应的操作(else块)

if多选择结构

  • if多选择结构,也称为**多分支选择结构或if-else if阶梯**,是编程中用用于处理多个互斥条件的一种流程控制语句。

  • 它的核心思想是:按顺序检查一系列条件,一旦发现某个条件为真(true),执行 与之对应的代码块,并且跳过其后所有其他分支,直接完成整个结构。

  • 如果所有条件都不为真(true),则可以选择执行一个默认的代码块(else部分)

  • 语法结构:

    if(布尔表达式1){//如果布尔表达式   1的值为true执行代码块
    }else if(布尔表达式 2){//如果布尔表达式   2的值为true执行代码块
    }else if(布尔表达式 3){//如果布尔表达式   3的值为true执行代码块
    }else{//如果以上布尔表达式都不为true执行代码
    }
    

流程图:

在这里插入图片描述

  • 从上图总结关键点:
    • 自上而下判断:条件是从上到下依次进行判断的。
    • 互斥执行:一旦某个条件被满足并执行了对应的代码块,整个结构就立即结束,后面的(else if)或else不会再被判断或执行
    • else是可选的:你可以不写else部分。如果所有条件都不满足,且没有else,那么这个多选择结构将不会执行任何操作。
    • else if的数量:可以根据需要写任意多个else if分支。
import java.util.Scanner;public class if多选择结构{public static void main(String[] args){/*要求:写出考试评分系统;100 满分;90~100 A级;80~90  B级;70~80  C级;60~70  D级;0~60   不合格;注意范围只在0~100为合法成绩其他不合法进阶:采用循环while结构定义循环退出程序*///使用ScannerScanner scanner = new Scanner(System.in);//打印标题System.out.println("请输出成绩");//使用while循坏结构while(scanner.hasNextInt()){//定义变量名,来接收scanner输入的返回值int score = scanner.nextInt();//设置退出循环结构if(score == -1){System.out.println("程序退出");break;//意思是当输入-1,整个循环终止。}else if(score == 100){System.out.println("满分");//意思是,当成绩再100(包含100),评定为满分}else if(score<100 && score>=90){ //&&是逻辑与,意思是需要同时满足全部条件,才为真(true)System.out.println("A级");  //意思是,当成绩再90~100(包含90),评定为A级}else if(score<90 && score>=80){System.out.print("B级"); //意思是,当成绩再80~90(包含80),评定为B级}else if(score<80 && score>=70){System.out.print("C级"); //意思是,当成绩再70~80(包含70),评定为C级}else if(score<70 && score>=60){System.out.println("D级"); //意思是,当成绩再60~70(包含70),评定为D级}else if(score<60 && score == 0){System.out.println("不合格"); //意思是,当成绩再0~60(包含0),评定为不合格}else{  //else:当输入的数据与以上条件都不符合,则运行。System.out.println("输入的成绩不合法");  //已知以上定义的成范围在0~100(包含0和100),也就是说当输入的数据不在这个范围内时,将运行else代码块}//设置下一个循环的标题System.out.println("请输入下一个成绩");}//结束Scanner方法scanner.close();}
}
  • 在IDEA上运行及总结

在这里插入图片描述
)

在这里插入图片描述

总结:

    • (else if)可以是无限个
    • 但是else代码块只能出现一个

嵌套的if结构

  • 嵌套的if结构是指在一个if语句(或[else if]和else分支)的内部,再包含另一个完整的if语句。

  • 这种结构允许程序进行多层次的、更复杂的条件判断。外层的条件首先被评估,如果为真(true),程序才会进入其他代码块的内部,并评估内层的条件。

  • 就想问:“如果这是真的,那么再检查一下这个是不是也真的?”

  • 工作原理与执行流程:

    • 程序会由内向外逐层检查条件。
        1. 首先判断最外层的条件
        2. 如果为真,则执行其代码块内的语句,包括内部嵌套的if语句。此时才会去判断内层条件。
        3. 如果外层为假,则跳过整个代码块(包括内层嵌套的if),继续执行后续的代码。内层的条件根本不会被评估。
  • 语法:

if(布尔表达式 1){//如果布尔表达式 1的值为true执行代码if(布尔表达式 2){//如果表达式 2的值为true执行代码}
}
  • 流程图:

在这里插入图片描述

if选择结构区别总结

特性if单选择结构if双选择结构if多选择结构嵌套if结构
分支数量只有1个条件分支有2个分支(条件成立/不成立)有3个或更多分支在分支内部可包含任意层级的if结构
执行逻辑条件成立时执行代码,否则跳过条件成立执行if块,不成立执行else块按顺序检查多个条件,执行第一个满足条件的分支外层条件满足后,再检查内层条件,可形成多级判断
else使用不使用else分支使用1个else分支可使用多个else if和1个else分支可在任意层级使用else或else if
适用场景只需处理条件成立的情况需要处理条件成立和不成立两种情况需要处理多种不同的条件情况需要处理复杂的多条件组合判断
结构特点最简单的条件判断结构非此即彼的二选一结构多条件依次判断的选择结构层次化的条件判断结构,可形成决策树
条件成立时执行代码,否则跳过条件成立执行if块,不成立执行else块按顺序检查多个条件,执行第一个满足条件的分支外层条件满足后,再检查内层条件,可形成多级判断
else使用不使用else分支使用1个else分支可使用多个else if和1个else分支可在任意层级使用else或else if
适用场景只需处理条件成立的情况需要处理条件成立和不成立两种情况需要处理多种不同的条件情况需要处理复杂的多条件组合判断
结构特点最简单的条件判断结构非此即彼的二选一结构多条件依次判断的选择结构层次化的条件判断结构,可形成决策树
http://www.dtcms.com/a/363778.html

相关文章:

  • CentOS 7 服务器CPU突然飙升至100%?精准定位问题。
  • HBase Region
  • token存储方案
  • 告别传统照明!安科瑞 DALI 总线智能照明系统,解锁公建项目照明新体验
  • 机器人控制器开发(人形机器人产品设计)
  • 【C++模板】从起源到入门,小白必学泛型编程指南
  • 民间药方偏方网站整站源码 带数据PHP版
  • 【爬油管搜索视频软件】youtube爬虫工具,根据关键词采集搜到的视频数据
  • 分布式爬虫的全局请求间隔协调与IP轮换策略
  • 重磅!PS2021 和企业微信 5.0 可直接运行,统信兼容引擎 V3.3.2 全面升级!
  • 【最新Pr 2025安装包(Adobe Premiere Pro 2025 中文解锁版)安装包永久免费版下载安装教程】
  • 用了企业微信 AI 半年,这 5 个功能让我彻底告别重复劳动
  • 深度学习篇---DenseNet
  • 机器人控制器开发(整体架构2 Lerobot介绍)
  • [嵌入式embed][Qt]Qt5.12+Opencv4.x+Cmake4.x_测试Qt编译的opencv4.x的库
  • 移动硬盘删除东西后,没有释放空间
  • 滚珠导轨在工业制造领域如何实现高效运行?
  • java-设计模式-4-创建型模式-工厂
  • 金博智慧:数量感知与注意力对儿童数学成绩的影响
  • OpenTiny NEXT 训练营实操体验 | 四步将你的 Web 应用升级为智能应用
  • Unity通过Object学习原型模式
  • 第三家公司虽然用了powerbi,但更适合用excel
  • QuickBI的已选字段 vs PowerBI的字段参数
  • 语音机器人交互系统:核心技术与应用挑战
  • 互联网向无线通信发展的关键历史时期
  • C语言风格字符串:概念、问题与解决方案
  • 技术干货|性能监控基石Prometheus(普罗米修斯)核心组件
  • MySQL进阶知识梳理
  • GEM5学习(2):运行x86Demo示例
  • 【数学建模学习笔记】时间序列分析:ARIMA