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

Java流程控制语句——条件控制语句详解(附有流程图)#Java条件控制语句有哪些?#if-else、switch

在 Java 编程中,条件控制语句用于控制程序的执行路径,决定根据某些条件来选择执行某段代码或跳过某段代码。它们是 Java 编程的重要组成部分,帮助开发者根据不同的输入、状态或数据流来编写更加灵活和动态的代码。在本文中,我们将详细讲解 Java 中的几种条件控制语句:if-elseelse-if switch,并通过示例帮助理解这些概念。

1. if-else语句

if-else 语句用于根据条件判断来选择不同的执行路径。当条件为真时,执行 if 代码块或者else if;当条件为假时,执行 else 代码块。

☑️if

格式:
if (关系表达式) {语句体;    
}
🔶执行流程:

①首先计算关系表达式的值

②如果关系表达式的值为true就执行语句体

③如果关系表达式的值为false就不执行语句体

④继续执行后面的语句内容

🏷️例子:
int age = 18;
if (age >= 18) {System.out.println("Adult");
}
if (age < 18) {System.out.println("Not an adult");
}
//输出结果为Adult
❗注意:
  • 如果我们要对一个布尔类型的变量进行判断,不要写==,直接把变量写在小括号中即可。

    boolean flag = true;
    if (flag) {System.out.println("判断为真");
    }
  • 如果大括号中的语句体只有一条,那么大括号可以省略不写。如果大括号省略了,那么if或者else只能控制距离他最近的那一条语句。但是建议还是加上大括号,代码可读性更强

    int a = 1;
    //如果大括号中的语句体只有一条,那么大括号可以省略不写
    if (a == 1) System.out.println("1");
    //但是还是建议加上大括号
    if (a == 1) {System.out.println("1");
    }

☑️if-else

格式:
if (关系表达式) {语句体1;   
} else {语句体2;   
}
🔶执行流程:

①首先计算关系表达式的值

②如果关系表达式的值为true就执行语句体1

③如果关系表达式的值为false就执行语句体2

④继续执行后面的语句内容

🏷️例子:
int age = 18;
if (age >= 18) {System.out.println("Adult");
} else {System.out.println("Not an adult");
}
//输出结果为Adult

☑️else if

格式:
if (关系表达式1) {语句体1;   
} else if (关系表达式2) {语句体2;   
} else if (关系表达式3) {语句体3;   
} 
…
else {语句体n+1;
}
🔶执行流程:

①首先计算关系表达式1的值

②如果值为true就执行语句体1;如果值为false就计算关系表达式2的值

③如果值为true就执行语句体2;如果值为false就计算关系表达式3的值

④…

⑤如果没有任何关系表达式为true,就执行语句体n+1。

🏷️例子:
int score = 75;
if (score >= 90) {System.out.println("A");
} else if (score >= 80) {System.out.println("B");
} else if (score >= 70) {System.out.println("C");
} else {System.out.println("F");
}
❗注意:

末尾的else如果不需要可以省略不写。

☑️使用场景

  • 当需要基于一个或多个逻辑条件来执行不同的代码路径时使用。

  • 通常用于处理简单的逻辑分支,如分数等级评定。

2. switch-case语句

🔶执行流程:

  • 首先计算出表达式的值

  • 其次,和case依次比较,一旦有对应的值,就会执行相应的语句,在执行的过程中,遇到break就会结 束。

  • 最后,如果所有的case都和表达式的值不匹配,就会执行default语句体部分,然后程序结束掉。

☑️传统格式:

switch (表达式) {case 值1:// 如果表达式的值等于值1,执行这里的代码break;case 值2:// 如果表达式的值等于值2,执行这里的代码break;default:// 如果没有匹配的case,执行这里的代码
}
🔶流程图:
开始
↓
获取表达式值
↓
判断是否等于值1
| 是 -> 执行代码块1
| 否 -> 判断是否等于值2
|    是 -> 执行代码块2
|    否 -> ... -> 执行默认代码块
↓
结束
🏷️示例:
int day = 2;
switch (day) {case 1:System.out.println("Monday");break;case 2:System.out.println("Tuesday");break;default:System.out.println("Invalid day");
}

☑️新型格式(Java 14及以上版本):

var result = switch (表达式) {case 值1 -> "值1的处理结果";case 值2 -> "值2的处理结果";// 更多case...default -> "默认处理结果";
};
🔶流程图:
开始
↓
获取表达式值
↓
匹配case值
| 匹配成功 -> 执行对应代码块
| 匹配失败 -> 执行默认代码块
↓
结束
🏷️示例:
String dayOfWeek = "Wednesday";
var dayResult = switch (dayOfWeek) {case "Monday" -> "今天是周一";case "Tuesday" -> "今天是周二";case "Wednesday" -> "今天是周三";default -> "不是这三天中的一天";
};
System.out.println(dayResult);

☑️使用场景

  • 当需要根据变量的不同取值来选择不同的执行路径时使用。

  • 特别适用于处理byte、short、int、char、枚举、String类型或预定义的几个可能值。

  • 有限值需要任选其一的情况用switch可以让语句更简洁可读。

  • case后面的值只能是字面量不能是变量

🔶switchelse if使用场景的区别
  • 当我们需要对一个范围进行判断的时候,用else if
  • 当我们把有限个数据列举出来,选择其中一个执行的时候,用switch语句

简单记忆:记住switch语句使用场景,其他都考虑else if

❗注意:

default可以放在任意位置,也可以省略

但是都不建议:

  • default放在其他位置会导致代码混乱,可读性差;
  • 省略会导致没有匹配上结果就会结束

不写break会引发case穿透现象

switch (week){case 1:case 2:case 3:case 4:case 5:System.out.println("工作日");break;case 6:case 7:System.out.println("休息日");break;default:System.out.println("没有这个星期");break;
}

3. 表格总结

语句用法适用场景
if-else用于判断一个布尔表达式并根据条件执行代码块用于范围判断、逻辑复杂的多条件分支
else-if用于多层判断,从上到下依次检查条件是否成立需要处理多条件且逻辑稍微复杂的场景
switch基于一个表达式的值,执行匹配的 case 代码块用于处理有限个具体值的比较,如整型、字符型

4. 结论

在 Java 中,条件控制语句是编写动态程序的基础,能够帮助开发者根据输入或状态做出决策。if-elseelse-if 语句提供了灵活的多条件判断,而 switch 语句则在处理有限个具体值的情况下更加简洁。通过合理选择和使用这些条件控制语句,可以使代码更加高效、清晰,并且容易维护。

http://www.lryc.cn/news/445028.html

相关文章:

  • 十一、SOA(SOA的具体设计模式)
  • Mybatis原理
  • 黑马头条day3-2 自媒体文章管理
  • JinDouYun性能测试工具使用方法
  • 操作系统 | 学习笔记 | | 王道 | 5.3 磁盘和固态硬盘
  • 【Oauth2整合gateway网关实现微服务单点登录】
  • WEB领域是不是黄了还是没黄
  • Android系统:系统架构
  • NCNN 源码(1)-模型加载-数据预处理-模型推理
  • 重修设计模式-结构型-享元模式
  • JavaScript 运算符
  • 3.js - 运动曲线
  • 免费ppt模板哪里找?职场必备这些利器
  • wampserve 配置本地域名,出现错误
  • MySQL慢查询优化指南
  • 怎么录制游戏视频?精选5款游戏录屏软件
  • 论文阅读 - MDFEND: Multi-domain Fake News Detection
  • LabVIEW软件出现Bug如何解决
  • 【数据结构-栈】力扣844. 比较含退格的字符串
  • DataFrame生成excel后为什么多了一行数字
  • linux 内存屏障(barrier)分析
  • 【人工智能】Transformers之Pipeline(十九):文生文(text2text-generation)
  • 如何使用ssm实现基于VUE的儿童教育网站的设计与实现+vue
  • MODBUS TCP 转 CANOpen
  • vue2+elementUI实现handleSelectionChange批量删除-前后端
  • LLMs之OCR:llm_aided_ocr(基于LLM辅助的OCR项目)的简介、安装和使用方法、案例应用之详细攻略
  • 低代码平台后端搭建-阶段完结
  • 暑假考研集训营游记
  • C#中的报文(Message)
  • Python知识点:如何使用Python与Java进行互操作(Jython)