BigInteger位于java.math包,用于处理超大整数运算,避免溢出。通过new BigInteger("字符串")或BigInteger.valueOf()创建对象。常用方法包括add、subtract、multiply、divide等算术操作,均返回新实例。比较使用compareTo或equals,支持进制转换与位运算,如and、or、shift操作。注意对象不可变,每次操作需重新赋值。

Java中的BigInteger类位于java.math包中,用于处理超出基本数据类型(如long)范围的大整数运算。它支持任意精度的整数计算,不会发生溢出问题,非常适合在加密、高精度计算等场景中使用。
创建BigInteger对象
BigInteger不能通过字面量直接创建,必须使用构造方法或静态工厂方法。
- 使用字符串构造:适用于大数值
- 使用
valueOf方法:适合小数值或基本类型转换
BigInteger a = new BigInteger("12345678901234567890");
BigInteger b = BigInteger.valueOf(100);
常用算术运算方法
BigInteger是不可变对象,所有操作都会返回新的实例。
-
add(BigInteger val):加法 -
subtract(BigInteger val):减法 -
multiply(BigInteger val):乘法 -
divide(BigInteger val):除法(取整)BigInteger quot = a.divide(b); -
remainder(BigInteger val):取余 -
pow(int exponent):幂运算(仅支持int类型指数)
BigInteger sum = a.add(b);
BigInteger diff = a.subtract(b);
BigInteger prod = a.multiply(b);
BigInteger rem = a.remainder(b);
BigInteger power = a.pow(3); // a的3次方
比较与判断方法
由于==不能用于比较BigInteger值,应使用compareTo或equals。
-
compareTo(BigInteger val):返回-1、0、1 -
equals(Object x):判断值是否相等 - 常用判断方法:
if (a.compareTo(b) > 0) { /* a > b */ }
if (a.equals(b)) { /* 相等 */ }
a.signum() 返回符号(-1负,0零,1正)
a.isProbablePrime(10) 判断是否为质数(概率性)
进制转换与位运算
BigInteger支持多种进制构造和位操作。
- 指定进制创建(如十六进制)
- 转为字符串并指定进制
- 位运算方法:
BigInteger hex = new BigInteger("FF", 16); // 值为255
String binStr = a.toString(2); // 转为二进制字符串
a.and(b)、a.or(b)、a.xor(b)、a.not()
a.shiftLeft(2) 左移2位,相当于乘4
a.shiftRight(1) 右移1位,相当于除以2(向下取整)
基本上就这些。掌握这些方法后,处理超大整数就不再受限于long的范围了。注意每次操作都生成新对象,别忘了赋值。不复杂但容易忽略。










