java中biginteger用于处理任意精度整数,不可变且无溢出,适用于密码学等场景;需通过字符串、静态常量或valueof()创建;运算返回新对象,比较用compareto/equals,转换需谨慎防异常。

Java 中用 BigInteger 类处理超长整数,它支持任意精度的整数运算,不会溢出,适合密码学、高精度计数、大阶乘等场景。
创建 BigInteger 对象
不能直接用基本类型赋值,必须通过字符串或字节数组构造,或者用静态常量:
- 从字符串创建:
BigInteger num = new BigInteger("123456789012345678901234567890"); - 使用静态常量:
BigInteger zero = BigInteger.ZERO;(还有ONE、TEN) - 从 long 转换(仅限范围内):
BigInteger.valueOf(100L)—— 更安全,推荐用于小整数
常用算术运算方法
BigInteger 所有运算都是不可变的,每次操作返回新对象,原对象不变:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
- 加法:
a.add(b) - 减法:
a.subtract(b) - 乘法:
a.multiply(b) - 除法(截断):
a.divide(b)(注意:不支持除零) - 取余:
a.remainder(b)或a.mod(b)(后者要求 b 为正,结果非负) - 幂运算:
a.pow(10)(指数必须是非负 int)
比较与转换
不能用 == 或 != 比较值,也不能直接转成基本类型(可能溢出):
- 比较大小:
a.compareTo(b)返回 -1/0/1(类似String.compareTo) - 判断相等:
a.equals(b)(不是 ==) - 转为 int/long(谨慎!):
a.intValueExact()或a.longValueExact()—— 超范围会抛ArithmeticException - 转为字符串:
a.toString(),默认十进制;支持指定进制:a.toString(16)
实用技巧与注意事项
避免常见坑,提升代码健壮性:
- 构造时字符串不能含空格或前导零(除非是 "0"),否则抛
NumberFormatException - 除法和模运算前务必检查除数是否为零,
b.equals(BigInteger.ZERO) - 链式调用更清晰:
a.multiply(b).add(c) - 性能敏感场景慎用:
BigInteger运算比基本类型慢很多,只在真需要大数时用
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










