BigInteger.pow()是Java中计算大整数非负整数幂的高效安全方法,采用快速幂算法,返回新BigInteger对象,不支持负指数或小数指数,结果精确但高次幂可能引发内存溢出。

BigInteger.pow() 是 Java 中计算大整数幂的直接方法,它高效、安全、无需手动实现,适用于任意大的整数和非负整数指数。
pow 方法的基本用法
BigInteger 提供了 pow(int exponent) 实例方法,用于计算当前 BigInteger 的 exponent 次幂。注意:exponent 必须是非负整数(≥0),否则会抛出 ArithmeticException。
- 调用方式:
bigInt.pow(5)表示计算 bigInt⁵ - 返回值是新的 BigInteger 对象,原对象不可变(BigInteger 是 immutable 类型)
- 支持极大结果——内部使用快速幂(exponentiation by squaring)算法,时间复杂度约为 O(log n)
常见使用示例
比如计算 123 的 100 次方:
BigInteger base = new BigInteger("123");
BigInteger result = base.pow(100); // 安全得到精确结果
System.out.println(result.toString().length()); // 输出位数(约 210 位)
再如处理超大底数:
立即学习“Java免费学习笔记(深入)”;
-
BigInteger.valueOf(2).pow(1000)得到 2¹⁰⁰⁰(约 302 位十进制数) -
new BigInteger("999999999999999999999").pow(50)也能正确运算,不会溢出
注意事项与限制
该方法不支持负指数或小数指数:
- 传入负数(如
pow(-1))会立即抛出 ArithmeticException - 无法计算平方根、开方等——这些需用其他方式(如牛顿迭代 + sqrt() 方法,但需自行实现或借助第三方库)
- 内存占用随结果位数增长,极高次幂(如 pow(1000000))可能触发 OutOfMemoryError,需评估实际需求
替代方案(仅当需要非整数幂时)
如果真需要“大整数的浮点次幂”(如 123^2.5),BigInteger 本身不支持。此时应:
- 先转为 double 或 BigDecimal 进行近似计算(精度丢失风险高)
- 或改用数学库(如 Apache Commons Math 的
BigReal扩展,但非标准 Java) - 多数场景下,坚持整数幂并用 pow() 即可满足需求


















