Java 实用工具类详解:Apache Commons Lang 的 NumberUtils

前言

        在 Java 项目开发中,我们经常需要进行各种数值类型的判断、转换、默认值处理等操作。Apache Commons Lang 提供了一个非常实用的工具类 org.apache.commons.lang3.math.NumberUtils,它封装了大量常用的数值处理方法,是一个高效可靠的数值工具集合。


一、常用方法详解

1. 判断字符串是否是数字
boolean result = NumberUtils.isCreatable("123.45"); // 支持负号、小数、科学计数法
boolean isDigits = NumberUtils.isDigits("123"); // 只能是正整数
2. 字符串转数字(带默认值)
int i = NumberUtils.toInt("123", 0);
double d = NumberUtils.toDouble("3.14", 1.0);
long l = NumberUtils.toLong("abc", 100L); // 转换失败返回默认值
3. 取最大/最小值
int max = NumberUtils.max(1, 5, 3); // 返回 5
long min = NumberUtils.min(99L, 12L, 77L); // 返回 12
4. 数字比较
boolean equal = NumberUtils.compare(10, 10) == 0;
5. 创建任意类型数字对象
Number n = NumberUtils.createNumber("123.45");

二、常见应用场景

  • 参数校验:校验用户输入是否为数字、转化为对应类型。

  • 配置解析:解析配置文件中的数值型配置,保证默认值兜底。

  • 排序筛选:集合元素的最小最大值处理。

  • 简化 null 判断:避免手动判空及 try-catch。


三、与原生 API 对比

功能原生方式NumberUtils优势
判断是否数字需自定义正则isCreatable()覆盖全面、易用
转换带默认值手动 try-catchtoInt(str, def)简洁、安全
最小最大值需遍历数组min()/max()一行实现

四、注意事项

  1. isDigits() 不支持负数或小数。

  2. isCreatable() 支持正负号、小数、十六进制、科学计数法等格式。

  3. createNumber() 会自动返回适当的包装类型(IntegerDoubleBigDecimal等),但要注意可能抛出 NumberFormatException

  4. Commons Lang 并不适用于高精度金融计算,涉及钱财应使用 BigDecimal


五、总结

    NumberUtils 是 Apache Commons Lang 提供的经典工具类,它简化了 Java 中数字类型的操作逻辑,是处理用户输入、配置解析和基础数值逻辑的利器。

        在日常开发中,掌握 NumberUtils 的用法可以大幅提高代码的可读性和健壮性,尤其在构建通用工具模块、参数校验、表单处理等场景中表现优秀。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Stay Passion

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值