登录
首页 >  文章 >  java教程

Java算术运算符详解与使用方法

时间:2026-03-06 17:00:44 423浏览 收藏

Java算术运算符看似基础,实则暗藏诸多易被忽视的陷阱:整数除法会无情截断小数、%运算符对负数返回有符号余数而非数学模值、自增/自减操作符的位置深刻影响表达式求值结果,而位运算符与关系运算符的优先级差异更常导致逻辑错误;这些并非语言缺陷,而是设计选择——唯有理解类型转换时机(如尽早强转而非事后乘1.0)、掌握负数取模的安全写法、规避同一表达式多次修改变量等实战细节,才能真正避开编译无错、运行诡异的“幽灵bug”。

如何在Java编程中使用算术运算符_Java数学运算基础教程

Java 里的算术运算符不是“学不会”,而是容易在类型转换和优先级上栽跟头——尤其当 intdouble 混用,或除法结果被意外截断时。

为什么 / 在两个 int 之间总是丢小数?

Java 的整数除法天生截断,不四舍五入也不报错。比如 7 / 2 结果是 3,不是 3.5;这不是 bug,是语言设计决定的。

  • 想保留小数:至少让其中一个操作数是 double,例如 7.0 / 2(double) 7 / 2
  • 别写 7 / 2 * 1.0——乘法在除法之后才执行,结果仍是 3.0,没意义
  • 如果变量是 int 类型,强制转 double 要尽早,比如 (double) a / b,而不是 a / b * 1.0

% 运算符不只是“取余”,它其实是“取模”,但 Java 里它对负数返回的是余数(有符号)

比如 -5 % 3-2,不是 1;这和 Python 的 % 行为不同,也和数学中常说的“模”不完全等价。

  • 需要真正非负结果(比如做数组索引):用 ((a % n) + n) % n 安全兜底
  • % 左右操作数类型必须一致,5L % 2 合法,但 5 % 2.0 编译失败——浮点数不支持 %
  • 0 取模会抛 ArithmeticException,运行时错误,编译器不检查

自增/自减 ++-- 的位置影响值,不是只影响变量本身

很多人以为 i++ 就是“先用后加”,但关键在于:这个“用”指的是表达式求值时取哪个值,而加法动作发生在整个表达式之后(但仍在当前语句内完成)。

  • int i = 1; int j = i++ + i;j1 + 2 = 3,不是 1 + 1i 最终为 2
  • 嵌套调用中慎用:list.get(i++)list.get(++i) 可能跳过元素或越界,建议拆成两行
  • 不要在同一个表达式里多次修改同一变量,如 i = i++ + ++i,行为未定义(虽然 Java 规范定义了,但极易出错且难调试)

最常被忽略的其实是运算符优先级组合,比如 a + b * c 没问题,但 a == b & c == d& 的优先级低于 ==,实际等价于 (a == b) & (c == d) —— 看似合理,可一旦换成 && 或混用位运算,括号就不再是可选项。

理论要掌握,实操不能落!以上关于《Java算术运算符详解与使用方法》的详细介绍,大家都掌握了吧!如果想要继续提升自己的能力,那么就来关注golang学习网公众号吧!

资料下载
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>