跳到内容

元数据卡

  • 前置知识:第2章 变量与类型;第3章 表达式
  • 预计时间:12 分钟
  • 阅读模式:高度专注
  • 完成标志:能准确预测整数除法和取余结果;能区分 ++ 前置与后置

老陈的铁匠铺里摆了一排工具:+-*/%。他说:"算术操作符最常用,但'除法'和'取余'上最容易栽跟头。"


第一幕:账本上的加加减减

一切正常。但整数除法有坑:

java
int a = 10;
int b = 3;
int quotient = a / b;  // 3 ← 等等!!不应该是 3.333 吗?

注意了10 / 3 在 Java 里等于 3,不是 3.333。两个 int 做除法,结果还是 int——小数部分直接截断

那真要小数怎么办?让一边变 double

java
double exact = 10.0 / 3; // 3.3333333333333335

intdouble 一起运算时,Java 自动把 int 提升成 double——隐式类型提升


取余操作符 %——高频实战工具

% 不取商,取余数。真实代码里高频出场:

java
// 判断奇偶
int n = 7;
boolean isOdd = n % 2 == 1; // true

// 分页——第 23 条数据在第几页?(每页 10 条)
int pageIndex = 23 / 10;       // 2
int positionInPage = 23 % 10; // 3

// 循环取色
int colorIndex = counter % 3;

语言:Java 预期输出:true、2、3


自增 ++ 与自减 --

工程铁律:绝不在复杂表达式中使用 ++/--单独成行使用

java
int a = 5;
int b = a++; // b = 5, a = 6(先取值,再加1)
int c = ++a; // c = 7, a = 7(先加1,再取值)

记忆口诀++a 先加再用,a++ 先用再加。

java
sold++;        // ✓ 单独一行

整数除法陷阱

java
double avg = (5 + 6 + 7) / 3; // 6.0(先整数除法得 6,再转 double)

想精确小数:

java
double avg = (5 + 6 + 7) / 3.0; // 6.0 ✓ —— 3.0 拉成 double 除法

经验法则:除数或被除数有一个是浮点数,整个除法就是浮点除法。


旅人笔记

五种算术:+ - * / %。整数除法截断是第一坑——想要小数,让一边变浮点数。取余 % 的实战场景:判奇偶、分页、循环。++/-- 单独成行用。


下一站:比较与逻辑运算符

程序不光要算数——它要做判断apples > 20 是真是假?短路求值怎么"偷懒"?在 ch03-operators-comparison.md

Built with VitePress | Software Systems Atlas