BigInteger.valueOf(long) 是将 long 转为 BigInteger 最直接高效的方式,复用缓存、避免字符串解析,对 -16 到 15 的小整数返回常量实例;不可用于超 long 范围的大数。

BigInteger.valueOf(long val) 是 Java 中将 long 转为 BigInteger 最直接、最高效的方式,底层复用缓存对象,无需字符串解析或额外构造开销。
为什么 valueOf 比 new BigInteger(String) 快?
它不经过字符串转换,也不做进制解析,而是直接封装 long 值的二进制表示。对小整数(-16 到 15),还会返回缓存的常量实例,避免重复创建对象。
分析 Java Spring Boot 后端 Controller 代码,自动生成 Markdown 格式的接口文档。当用户说“生成 Java 接口文档”、“生成 API 文档”、“从 Spring 代码生成文档”时触发。
valueOf 的实际用法
- 直接传入 long 值:
BigInteger bi = BigInteger.valueOf(1234567890123L); - 支持负数:
BigInteger neg = BigInteger.valueOf(-42L); - 可链式调用,比如用于计算:
BigInteger sum = BigInteger.valueOf(a).add(BigInteger.valueOf(b));
注意边界和常见误区
- 参数是
long类型,不是int或String;若变量是 int,会自动提升,但显式写成 long 更清晰(如100L) - 不要误用
BigInteger.valueOf(String)—— 那是重载方法,走字符串解析,慢且可能抛 NumberFormatException - 超过 long 范围的大数(如 10^20)不能用此方法,必须用
new BigInteger(String)或BigInteger.valueOf(long)的组合逻辑(例如分段处理)
性能对比小提示
在循环中频繁转换时,valueOf 比 new BigInteger(Long.toString(x)) 快 5–10 倍以上,主要省去了字符串创建、字符遍历和十进制解析过程。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










