Java程序设计 第3章:控制语句

来源:田浩然上传的资料 / 1B003_JAVA程序设计 / ppt / 2008-02 / 03.pdf(64页,文本型PDF)

概述

本章是 Java 编程基础的核心章节,系统讲解 Java 的布尔类型、比较运算符、逻辑运算符、条件分支语句(if/switch)、条件运算符、格式化输出、运算符优先级与结合性。

核心知识点

1. 布尔类型与比较运算符(§3.2)

  • Java 提供 6 个比较运算符(关系运算符):< <= > >= == !=
  • 比较结果为 boolean 类型:true 或 false
  • boolean b = (1 > 2); —— 典型用法

2. 布尔逻辑运算符(§3.2.1)

运算符名称说明
!逻辑非取反
&&条件与短路与
||条件或短路或
^异或互斥或

关键区别:&&{ /\|\| 是短路运算符(条件求值),& } ;/\| 是无条件运算符(两边都求值)。短路运算符在左边表达式已足以确定结果时不会计算右边,可避免空指针等副作用。

3. 选择语句

if 语句(§3.3)

  • 基本形式:if (booleanExpression) { statement(s); }
  • 括号是必须的(即使只有一条语句)
  • 常见陷阱:if (radius >= 0); —— 分号导致空语句体,逻辑错误且不报错
  • if...else:二选一分支
  • else 总是匹配最近的 if(同一块内)
  • else if 链:多分支选择,等价于嵌套 if-else

switch 语句(§3.4)

  • switch 表达式值类型必须是 char、byte、short、int(及枚举、String)
  • case 值必须是常量表达式(不能含变量)
  • break 是可选的但应使用:不加 break 会”穿透”到下一个 case
  • default 可选,放在最后是好风格
  • case 顺序不影响结果,但建议按逻辑顺序排列

4. 条件运算符(§3.5)

  • 三目运算符:(booleanExpression) ? expression1 : expression2
  • 等价于简单的 if-else 赋值:y = (x > 0) ? 1 : -1;

5. 格式化输出(§3.6)

  • System.out.printf(format, items) —— 借鉴 C 的 printf
  • 常用格式化占位符:
    • %b → boolean
    • %c → char
    • %d → 十进制整数
    • %f → 浮点数
    • %e → 科学计数法
    • %s → 字符串
  • String.format(format, ...) —— 生成格式化字符串

6. 运算符优先级与结合性(§§3.7-3.8)

  • 优先级从高到低:后缀 ++/-- → 一元 + - ++/-- → 强制转换 → ! → * / % → + - → < <= > >= → == != → & → ^ → \| → && → \|\| → 赋值 = += -= ...
  • 结合性:除赋值运算符是右结合外,所有二元运算符都是左结合
  • 操作数求值顺序:Java 严格从左到右求值,即使运算符有副作用(如 x++),左边操作数也先于右边计算

关键示例

  • 闰年判断:(year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)
  • 税收计算:基于申报身份(单身/已婚共缴/已婚单缴/家庭纳税人)的多分支 if-else
  • 猜生日:用 switch + 位运算还原生日日期
  • 运算符优先级示例:3 + 4 * 4 > 5 * (4 + 3) - 1 逐步求值结果为 false

与其他知识的关联

  • 与《1B003_JAVA程序设计》系列其他章节(循环、数组、面向对象)构成 Java 基础体系
  • 控制语句是所有编程语言的通用基础,与 C/C++/Python 对比可加深理解
  • 运算符优先级与《离散数学》中的逻辑表达式求值有相通之处