Java整数反转用%和/配合循环实现,逐位拆解再构建;需处理符号、溢出(如res>MAX_VALUE/10或等于时digit>7则返回0),推荐用long暂存防中间溢出。

Java 中整数反转可以用 取模(%)和整除(/) 这两个基本运算符配合循环完成,无需转字符串、不依赖额外库,核心思路是“逐位拆出末尾数字,再构建成新数”。
关键原理:利用 10 进制的数学特性
对任意整数 x:
- x % 10 得到个位数字(如 123 % 10 = 3)
- x / 10 去掉个位(整除向零截断,如 123 / 10 = 12)
- 反转结果 res 初始为 0,每次执行 res = res * 10 + x % 10,再更新 x = x / 10
处理负数:先记符号,按正数处理
Java 中负数取模仍保持符号(如 -123 % 10 == -3),但为简化逻辑,推荐统一转为正数操作:
- 用 long 类型暂存结果 避免中间溢出(因为 int 反转后可能超范围)
- 记录原数符号:int sign = x
- 用 long num = Math.abs((long) x) 转成正数 long 再处理
防溢出判断:在构建过程中检查
不能等算完再判断,因为 int 最大值 2147483647,反转后若超限会静默溢出。应在每步更新前检查:
Java项目代码review工具。分析Git变更+完整调用链路上下文,推断业务需求,进行多维度评分和分类汇总,生成完整PRD文档。包含细粒度Java代码审查清单(Null安全、异常处理、Streams、并发、equals/hashCode、资源管理、API设计、性能、MyBatis/ORM、事务边界、SQL/DD...
立即学习“Java免费学习笔记(深入)”;
- 若 res > Integer.MAX_VALUE / 10,则下一步 *10 必超限
- 若 res == Integer.MAX_VALUE / 10,且下一位数字 > 7(即 2147483647 的个位),则超限
- 同理处理负数下界(-2147483648),下一位
完整可运行示例
// 注意:返回 int,溢出时返回 0
public static int reverse(int x) {
int res = 0;
while (x != 0) {
int digit = x % 10;
// 溢出预检:正数上限
if (res > Integer.MAX_VALUE / 10 || (res == Integer.MAX_VALUE / 10 && digit > 7)) return 0;
// 溢出预检:负数下限
if (res
res = res * 10 + digit;
x /= 10;
}
return res;
}

















