biginteger.add()返回新对象而不修改原对象,参数非null,支持任意大小整数加法;错误写法是忽略返回值,正确需显式接收,如sum = a.add(b)。

BigInteger.add() 方法直接返回两个大整数相加的结果,不修改原对象,返回一个新 BigInteger 对象。
add 方法的基本用法
BigInteger 是不可变类,所有运算(包括 add)都生成新对象,原对象保持不变。调用方式很简单:
- 语法: bigInt1.add(bigInt2)
- 参数 bigInt2 必须是非 null 的 BigInteger 实例,否则抛出 NullPointerException
- 结果是 mathematically 正确的和,支持正数、负数、零,自动处理进位和符号
常见使用场景示例
比如计算超出 long 范围的数(如 2^100 + 2^100):
- 先用 BigInteger.valueOf(1).shiftLeft(100) 构造 2¹⁰⁰
- 再调用 a.add(a) 得到 2¹⁰¹
- 也可用字符串构造:new BigInteger("12345678901234567890").add(new BigInteger("98765432109876543210"))
注意点和易错细节
别把 add 当成就地修改操作——它不会改变调用者本身:
- 错误写法:a.add(b); —— 结果被丢弃,a 和 b 都没变
- 正确写法:BigInteger sum = a.add(b); —— 显式接收返回值
- 链式调用可行:a.add(b).add(c).multiply(d),因为每步都返回新对象
性能与替代方案
add 时间复杂度约为 O(max(m,n)),m 和 n 是两个数的位数。一般场景无需优化,但若频繁累加,可考虑:
- 避免重复创建临时对象,复用中间结果变量
- 对大量数字求和,用循环或流式 accumulate(Stream.reduce(BigInteger.ZERO, BigInteger::add))
- 纯数值计算且范围可控时,优先用 long 或 double;只有真正超限时才用 BigInteger
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











