第一部分:if语句基础
if语句是Java中最基础的条件控制结构,用于根据条件执行不同的代码块
学习目标
掌握if语句的基本语法和使用场景,能够编写简单的条件判断代码
基本语法结构
if语句的基本语法格式:
示例:判断成绩是否及格
布尔条件表达式
if语句的条件必须是一个布尔表达式(结果为true或false)
- 关系运算符: >, <,>=, <=, ==, !=
- 逻辑运算符: && (与), || (或), ! (非)
示例:多个条件的组合
学习小贴士
在Java中,if语句的条件必须是一个布尔值,不能像某些语言那样使用0或1代替。常见的错误是在条件中使用赋值运算符(=)而不是相等运算符(==),如if (x = 5)会导致编译错误。
动手练习
- 编写程序判断一个数是否是偶数
- 编写程序判断年份是否是闰年(能被4整除但不能被100整除,或能被400整除)
- 编写程序判断用户输入的年龄是否大于等于18岁
第二部分:if-else语句
当需要根据条件执行不同分支时,使用if-else结构
学习目标
掌握if-else语句的使用方法,能够处理两种互斥情况
基本语法结构
if-else语句的基本格式:
示例:判断数字正负
流程图解析
if-else语句的执行流程:

注意:else分支是可选的,但必须紧跟在if代码块之后
学习小贴士
当if或else代码块中只有一条语句时,可以省略花括号{}。但为了代码清晰和避免错误,建议始终使用花括号包裹代码块。
动手练习
- 编写程序判断一个数是奇数还是偶数
- 编写登录验证程序:用户名和密码都正确输出"登录成功",否则输出"用户名或密码错误"
- 编写程序判断一个字符是元音字母还是辅音字母
第三部分:else-if语句
处理多个互斥条件的分支情况
学习目标
掌握else-if结构的使用,能够处理多个条件分支
基本语法结构
else-if语句的基本格式:
示例:成绩等级划分
执行顺序与注意事项
- 条件从上到下依次检查
- 一旦某个条件满足,执行对应代码块后即退出整个结构
- else分支是可选的,但只能有一个
- 条件的顺序很重要,应把最可能满足的条件放在前面
重要:避免重叠的条件范围,确保条件互斥
学习小贴士
当条件分支超过3个时,考虑使用switch语句可能更清晰。但switch只能用于等值判断,而if-else可以处理范围判断和复杂条件。
动手练习
- 编写程序将分数转换为等级:A(90-100), B(80-89), C(70-79), D(60-69), F(0-59)
- 编写BMI分类程序:体重过轻(BMI<18.5), 正常(18.5-24.9), 超重(25-29.9), 肥胖(>=30)
- 编写程序根据月份输出季节:12-2月冬季,3-5月春季,6-8月夏季,9-11月秋季
第四部分:三元运算符
简洁的条件表达式语法
学习目标
掌握三元运算符的语法和使用场景,能够简化简单的if-else结构
基本语法结构
三元运算符的基本格式:
如果条件为true,返回表达式1的值;否则返回表达式2的值
示例:求两个数的最大值
与if-else的比较
特性 | 三元运算符 | if-else语句 |
---|---|---|
语法 | 紧凑,单行 | 需要多行 |
返回值 | 必须返回值 | 可以没有返回值 |
代码块 | 只能是单表达式 | 可以是多行代码块 |
可读性 | 简单条件时更清晰 | 复杂逻辑时更清晰 |
嵌套 | 可以嵌套但易混乱 | 支持清晰嵌套 |
学习小贴士
三元运算符非常适合简单的条件赋值操作,但应避免过度嵌套,如(a ? (b ? c : d) : (e ? f : g))这样的代码会降低可读性。当逻辑复杂时,优先使用if-else语句。
动手练习
- 使用三元运算符判断一个数是奇数还是偶数
- 使用三元运算符判断年份是否为闰年
- 使用三元运算符将数字的绝对值赋给一个新变量
- 使用嵌套三元运算符实现成绩等级划分(A/B/C/D/F)
第五部分:嵌套条件语句
在条件语句内部再包含条件语句
学习目标
掌握嵌套条件语句的使用方法,能够处理复杂逻辑判断
基本语法结构
嵌套if语句的基本格式:
示例:登录系统多级验证
避免过度嵌套
过度嵌套会导致代码难以阅读和维护:
- 使用卫语句(Guard Clauses)提前返回
- 将复杂条件提取为布尔变量或方法
- 考虑使用策略模式重构
重构示例:
学习小贴士
在编写嵌套条件语句时,合理的缩进至关重要。建议每个嵌套层级缩进4个空格,这有助于保持代码结构清晰。现代IDE如IntelliJ IDEA可以自动格式化代码,使用快捷键Ctrl+Alt+L(Windows)或Cmd+Option+L(Mac)可以快速格式化代码。
动手练习
- 编写程序判断一个年份是否是闰年,并判断该年份的2月有多少天
- 编写电商折扣系统:会员且订单金额大于1000打9折,会员但金额不足1000打95折,非会员不打折
- 编写三角形类型判断程序:先判断能否构成三角形,再判断是等边、等腰还是普通三角形
第六部分:最佳实践与常见错误
编写高质量条件语句的技巧和注意事项
学习目标
掌握条件语句的最佳实践,避免常见错误,编写可读性高的代码
最佳实践
- 始终使用花括号{}包裹代码块
- 保持条件表达式简单,复杂逻辑提取为方法
- 使用有意义的布尔变量名
- 避免在条件中写复杂表达式
- 优先处理简单或常见情况
- 使用final修饰符声明不会改变的变量
常见错误
- 在条件中使用赋值运算符(=)而非相等运算符(==)
- 在布尔条件中误用位运算符(&, |)而非逻辑运算符(&&, ||)
- 浮点数使用==进行相等比较(应使用差值范围判断)
- 字符串使用==比较而非equals()方法
- 忽略边界条件(如使用score > 90而非score >= 90)
性能优化
- 将最可能为true的条件放在前面
- 避免在循环内部进行不必要的条件判断
- 使用switch替代多个if-else if链
- 使用查找表替代复杂条件分支
- 考虑使用多态替代条件语句
学习小贴士
在条件语句中,短路求值(Short-circuit Evaluation)是一个重要特性。当使用&&运算符时,如果左侧表达式为false,右侧表达式将不会执行。同样,当使用||运算符时,如果左侧表达式为true,右侧表达式也不会执行。合理利用这一特性可以提高性能并避免不必要的计算。
综合练习
- 编写个人所得税计算程序:根据收入范围应用不同税率
- 编写日期验证程序:检查输入的年月日是否合法(考虑闰年)
- 编写简单计算器:支持加减乘除,根据用户输入的运算符执行不同计算
- 编写用户权限系统:根据用户角色(admin, editor, viewer)显示不同菜单选项