java中if结构用图表示_Java语法 | if选择结构 | 创作者训练营

本文详细介绍了Java中的选择控制语句,包括基础if、if-else、多重if、嵌套if的语法和使用案例。通过实例展示了如何根据条件执行不同的代码块,如奖励或惩罚学生,以及如何处理复杂的条件判断。同时强调了字符串比较时不要使用==,而应使用equals()方法。
摘要由CSDN通过智能技术生成

前言

C: 上一篇我们介绍了流程控制语句的概念,本篇我们要正式开始学习其中的选择控制语句。那么在 Java 中,如果要实现选择控制语句有哪些语法呢?

本篇我们就来看看其中,在以后用的最多的一种选择结构语法:if 系列选择结构。

726c0e22b022a440f10d06e073feb04a.png

系列阅读

基础if选择结构

基础 if 选择结构 是 if 系列选择结构中,最基础的结构语法!它是最简单的选择结构,也只能用于一种流程分支的处理。// 语法// 条件往往是由关系运算符来组成的判断// 条件的结果是一个boolean值,要么为true(真),要么为false(假)if(条件){// 条件为真时执行的代码块}复制代码

402d809a3ece9367f84214bf7a1bf9a1.png

案例需求:如果佩奇 Java 成绩大于 90 分,查老师将会奖励她一部 OnePlus 8 Pro。// 声明一个变量用来存储佩奇的Java成绩int score = 91;// 套用基础if语法if(score > 90) {

System.out.println("查老师奖励了一部OnePlus 8 Pro。");

}

System.out.println("程序结束!");复制代码查老师有话说: 套用下语法,用用关系运算符,就实现了一个很简单的选择案例,是不是很 easy。

复杂条件的基础if

接下来再看看下方案例中的条件,它就没有那么容易了。

案例需求:如果乔治 Java 成绩大于 90 分,并且音乐成绩大于 80 分时,或者 Java 成绩等于 100 分,音乐成绩大于 70 分时,查老师会奖励他一部 OnePlus 8 Pro。

面对这种场景,单靠普通的关系运算符显然无法实现,结合逻辑运算符就可以很好解决。// 声明变量分别存储乔治的Java成绩和音乐成绩int jScore = 60;int mScore = 81;// 关系运算符结合逻辑运算符// 考虑到运算符的优先级,可以使用()来提升部分表达式的优先级,也是复杂条件下增加可读性的方法// ()的添加应该成为一种本能,它是义务教育阶段学数学后的条件反射if((jScore > 90 && mScore > 80) || (jScore == 100 && mScore > 70)){

System.out.println("查老师奖励了一部OnePlus 8 Pro。");

}

System.out.println("程序结束!");复制代码

if-else选择结构

我们敲完上方的代码发现,如果条件不满足的话,好像什么处理情况也没有,这怎么可能,只有老师奖励学生,没有学生受罚?我们再来看个案例。

案例需求:如果苏西 Java 考试成绩大于 90 分,查老师就奖励她一部 OnePlus 8 Pro,否则就罚她给查老师买一部 OnePlus 8 Pro。

面对这个案例,我们还是可以采用基础If语法。// 条件成立情况if(score > 90){

System.out.println("查老师奖励了一部OnePlus 8 Pro。");

}// 条件不成立情况// if(score <= 90){// System.out.println("苏西哭着给查老师买了一部OnePlus 8 Pro,查老师很感动。");// }// 还可以这么写// !表示取反,也就是某种情况的相反情况if (!(score > 90)){

System.out.println("苏西哭着给查老师买了一部OnePlus 8 Pro,查老师很感动。");

}复制代码

但是明知道两个结果是互斥的,还要再写一次判断,并且条件越复杂,写起来就越麻烦。

例如:如果要基于刚才复杂条件的if案例来写的话。// 声明变量分别存储乔治的Java成绩和音乐成绩int jScore = 60;int mScore = 81;// 成立if((jScore > 90 && mScore > 80)

|| (jScore == 100 && mScore > 70)){

System.out.println("查老师奖励了一部OnePlus 8 Pro。");

}// 不成立的情况if(!((jScore > 90 && mScore > 80)

|| (jScore == 100 && mScore > 70))){

System.out.println("奖励乔治给查老师买了一部OnePlus 8 Pro。");

}

System.out.println("程序结束!");复制代码

头疼 ,这时候我们可以使用 if-else 语法来轻松解决这种条件互斥的情况。if-else 选择结构可以处理简单的互斥分支情况。// 语法if(条件){// 代码块1}else{// 代码块2}复制代码

9e3aebe13b24ea3a96676a51f6246f43.png

b15c099f97792a6157eabe06e768747a.png

使用 if-else 来解决上述案例需求。// 声明一个变量存储苏西的Java考试成绩int score = 90;// 套用if-else语法// if:如果  else:否则if(score > 90){

System.out.println("查老师奖励了一部iPhone 11 Pro。");

}else{

System.out.println("苏西哭着给查老师买了一部OnePlus 8 Pro,查老师很感动。");

}复制代码查老师有话说: 实际上我们学的这些语法,在你念着案例时就能把代码写出来,如果(if)苏西的 Java 考试成绩(score)大于90分(> 90),查老师就奖励她一部 OnePlus 8 Pro(System.out.println("xxx");),否则(else)就罚她给查老师买一部 OnePlus 8 Pro(System.out.println("xxx");)。

多重if选择结构

我们掌握了 基础if 来处理单分支选择,也掌握了 if-else 来处理互斥分支,但是如果出现了更多种的分支情况怎么办?

案例需求:如果佩奇 Java 考试成绩大于等于 80 分,查老师就奖励她一部 OnePlus 8 Pro,如果佩奇 Java 考试成绩大于等于 60 分,查老师就奖励她一部一加云耳,否则就罚她给查老师买一部 iPhone 11 Pro。

面对此需求,if-else 只能处理互斥分支所以不能采用,那使用 基础if 的方案如下。// 声明一个变量存储佩奇的Java考试成绩int score = 90;if(score >= 80){

System.out.println("查老师奖励她一部OnePlus 8 Pro。");

}// 如果不添加&&来进行限制,那么佩奇考试成绩>80分时,查老师将会破产if(score >= 60 && score 

System.out.println("查老师奖励她一部一加云耳。");

}if(score 

System.out.println("佩奇哭着给查老师买了一部iPhone 11 Pro,查老师很感动。");

}复制代码

毫无疑问,基础if 依然需要添加多次条件,但对于范围型判断来讲,如果不把范围控制好,那么后续的 if 条件就会出现多余判断的情况,因为每个 基础if 都是独立的,Java 为此提供了一种简化的方案:多重if选择结构。

多重if选择结构: 可以处理分段的条件分支情况,它是自上而下进行选择判断,只要有一个条件满足,剩下的条件都不再执行判断 。所以不要随意排列条件,把容易满足的条件放在下方,不然容易满足的条件判断为 true 后,后续其他条件都不会再判断了。// 语法if(条件1){// 代码块1}else if(条件2){ // 可以有多个else if// 代码块2}else{ // 可以省略// 代码块3}复制代码

2bb35121dd9650a48e499f0be893bda6.png// 存储考试成绩int score = 90;// 套用if - else if - else语句/*

* 注意事项:

* 1.else if 必须配合if使用,if只能写一个,else if可以写很多个

*   2.if-else if结构是自上而下进行判断选择的,只要上方的一个条件成立,下方的其他条件不再执行

* 3.可以结合else来使用,当上方所有条件都不成立时,就会执行else代码块内容

*/if(score >= 80){

System.out.println("查老师奖励她一部OnePlus 8 Pro。");

}else if(score >= 60){ // 不需要限制 =80,就不再向下判断System.out.println("查老师奖励她一部一加云耳。");

}else{

System.out.println("佩奇哭着给查老师买了一部iPhone 11 Pro,查老师很感动。");

}复制代码

嵌套if选择结构

生活在北上广深的各位同学们,对早晚高峰的地铁站印象很深了吧?在乘坐地铁前,我们需要有两次检查,第一次是安全检查,第二次是车票检查。火车站也是类似的。

面对这种多次检查,它的逻辑不是 多重If 这种自上而下依次执行的判断,而是当通过第一层判断后才可以进入第二层判断,面对这种场景,我们可以把 if 语句再灵活使用一点。

633f559d728ade5b24148f2ba39dbd36.png

嵌套if 的应用场景:在之前条件满足的前提下,再增加额外的判断 。它可以通过外层语句和内层语句的协作,增强程序的灵活性。在查老师看来,当业务场景描述清楚的时候,福至心灵下就会自然而然的写出来对应的代码了。if(条件1){if(条件2){// 代码块1}else{// 代码块2}

}else{// 代码块3}复制代码

67bfd352365fed9ea579749f7382570b.png

案例需求:学校举行运动会,百米赛跑跑入10秒内的学生有资格进决赛,然后根据性别进入男子组或女子组// 声明一个变量存储百米成绩int score = 9;// 声明一个变量存储性别String gender = "女";// 套用嵌套if语句// 注意事项:如果没有进入决赛,也就不会分配组别了if(score 

}else{

System.out.println("进入了女子组!");

}

}复制代码

字符串的比较

大多数情况下,我们比较内容时都会采用 == 这个关系运算符,但是如果遇到特殊类型,就不可以了。

字符串的比较不要使用==,而是采用equals()方法。查老师有话说: 介绍数据类型时,查老师就说过 String 是个引用数据类型,有点特别。先了解,知道使用equals 方法来比较字符串内容即可。// == 号可以比较基本数据类型的值是否相等(八大基本数据类型)int num1 = 10;int num2 = 10;// System.out.println(num1 == num2); // truechar gender1 = '男';char gender2 = '男';// System.out.println(gender1 == gender2); // true// ------------------// 如果是字符串,不要使用==号比较,而是使用equals()方法// 因为字符串是引用数据类型,==号如果比较引用数据类型,实际上比较的是数据的地址值而不是比较内容// 所以==很有可能导致你的字符串内容比较出问题,因为它比较的是地址值// 即使你发现两个字符串用==也比较为true了,那其实是涉及到常量池的概念了。// 先记住不要用==比较字符串就可以了!!!后期面向对象阶段学完就知道为啥了。String str1 = "我是一个字符串";

String str2 = "我是一个字符串";

System.out.println(str1.equals(str2));复制代码

后记

选择结构的使用,一般不会困扰到大家。因为它与我们日常生活是非常贴近的,可读性非常强。当然如果还是不能理解,别忘了流程图哈!

2c5862a9dbb33b5a7ccf97e914551a71.png查老师有话说: 对于技术的学习,查老师一贯遵循的步骤是:先用最最简单的 demo 让它跑起来,然后学学它的最最常用 API 和 配置让自己能用起来,最后熟练使用的基础上,在空闲时尝试阅读它的源码让自己能够洞彻它的运行机制,部分问题出现的原因,同时借鉴这些技术实现来提升自己的代码高度。

所以在查老师的文章中,前期基本都是小白文,仅仅穿插很少量的源码研究。当然等小白文更新多了,你们还依然喜欢,后期会不定时专门对部分技术的源码进行解析。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值