java 如何判断是不是数字
判断字符串是否为数字的方法
在Java中,可以通过多种方式判断一个字符串是否为数字。以下是几种常见的方法:
使用正则表达式匹配
利用正则表达式可以快速判断字符串是否符合数字格式(包括整数、小数、科学计数法等)。

public static boolean isNumeric(String str) {
return str.matches("-?\\d+(\\.\\d+)?"); // 匹配整数或小数
}
扩展版本支持科学计数法:
public static boolean isNumeric(String str) {
return str.matches("-?\\d+(\\.\\d+)?([eE][+-]?\\d+)?");
}
使用Java内置工具类
NumberUtils(Apache Commons Lang库)提供现成方法:

import org.apache.commons.lang3.math.NumberUtils;
boolean result = NumberUtils.isCreatable("123.45"); // 支持多种数字格式
捕获NumberFormatException异常
通过尝试转换来验证:
public static boolean isNumeric(String str) {
try {
Double.parseDouble(str);
return true;
} catch (NumberFormatException e) {
return false;
}
}
字符遍历验证
手动检查每个字符:
public static boolean isNumeric(String str) {
if (str == null || str.isEmpty()) return false;
int dotCount = 0;
for (char c : str.toCharArray()) {
if (c == '-' && str.indexOf('-') != 0) return false;
if (c == '.') dotCount++;
if ((!Character.isDigit(c) && c != '-' && c != '.') || dotCount > 1) {
return false;
}
}
return true;
}
各方法对比
- 正则表达式:简洁但性能中等,适合简单场景
- 工具类:功能全面但需引入第三方库
- 异常捕获:准确性高但有性能开销
- 字符遍历:性能最佳但实现复杂
对于纯整数判断,可使用Integer.parseInt()配合异常捕获。科学计数法场景建议使用正则表达式或工具类实现。






