biginteger是java中处理任意精度整数的不可变类,支持超长整数精确运算;需通过字符串、字节数组或进制字符串构造,提供add、multiply等实例方法实现算术运算,用compareto比较大小,tostring转换输出。

BigInteger 是 Java 提供的专门处理任意精度整数的类,能精确计算远超 long 范围(±2⁶³−1)的整数,比如几百位甚至上千位的数字,不会溢出、不损失精度。
创建 BigInteger 对象
不能像基本类型那样直接赋值,必须通过构造方法或静态工厂方法创建:
- 用字符串构造:最常用,避免 long 溢出问题
// 正确:字符串可表示任意长度数字BigInteger big = new BigInteger("123456789012345678901234567890"); - 用字节数组构造:适用于二进制数据解析
BigInteger big = new BigInteger(byte[] val); - 用 int 值和进制构造:如十六进制字符串
BigInteger hex = new BigInteger("1A", 16); // 结果为 26 - 使用静态常量:
BigInteger.ZERO、BigInteger.ONE、BigInteger.TEN
基本算术运算
所有运算都通过实例方法完成,返回新对象(不可变),原对象不变:
- 加法:
a.add(b) - 减法:
a.subtract(b) - 乘法:
a.multiply(b) - 除法(向零取整):
a.divide(b);带余数的除法:a.divideAndRemainder(b)返回BigInteger[2](商、余数) - 幂运算:
a.pow(n),n 必须是非负 int - 取模:
a.mod(b)(b 必须为正),结果在 [0, b) 区间
比较与判断
不能用 == 或 != 比较值(那是引用比较),也不能用 >、:
- 比较大小:
a.compareTo(b),返回 -1 / 0 / 1(类似 String) - 判断相等:
a.equals(b)(推荐),或a.compareTo(b) == 0 - 判断正负:
a.signum()→ -1(负)、0(零)、1(正) - 是否为偶数:
a.testBit(0)(看最低位是否为 1);更直观可用a.remainder(BigInteger.TWO).equals(BigInteger.ZERO)
转换与输出
谨慎转换为基本类型,可能丢失精度或抛异常:
- 转为 int/long:
a.intValueExact()、a.longValueExact()—— 超范围时抛ArithmeticException - 转为字符串:
a.toString()(默认十进制),或a.toString(radix)(如toString(16)十六进制) - 获取字节数组:
a.toByteArray()(补码形式,高位在前)
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











