Java中字符串转基本数字类型应使用包装类的parseXxx()静态方法(如Integer.parseInt),失败抛NumberFormatException;支持多进制解析,需校验空值与格式,valueOf()则返回缓存对象。

Java中通过包装类将字符串转换为基本数字类型,核心是调用对应包装类的静态解析方法(如 Integer.parseInt()),而非构造器。这类方法会尝试将字符串按指定进制解析为对应基本类型值,失败则抛出 NumberFormatException。
常用包装类的 parseXxx() 方法
每种数字包装类都提供对应的静态解析方法,用于将符合格式的字符串转为基本类型:
-
Integer.parseInt("123") → 返回
int值 123 -
Double.parseDouble("3.14") → 返回
double值 3.14 -
Long.parseLong("999999999999") → 返回
long值 -
Byte.parseByte("127") → 返回
byte值(注意范围) -
Short.parseShort("-32768") → 返回
short值 -
Float.parseFloat("2.5f") → 返回
float值(支持科学计数法如 "1.23E-4")
处理进制与非十进制字符串
部分 parse 方法支持指定进制,适用于二进制、十六进制等场景:
- Integer.parseInt("1010", 2) → 解析二进制字符串,返回 10
- Integer.parseInt("FF", 16) → 解析十六进制字符串,返回 255
- Long.parseLong("1A", 16) → 同样支持 long 类型的多进制解析
- 进制参数必须在 2–36 之间,超出会抛出
IllegalArgumentException
安全转换:避免 NumberFormatException
直接调用 parse 方法对非法字符串(如空串、null、含字母、超范围)会抛异常,生产环境建议加防护:
立即学习“Java免费学习笔记(深入)”;
- 先判空:
if (str == null || str.trim().isEmpty()) - 用 try-catch 捕获
NumberFormatException,提供默认值或日志记录 - 对已知格式字符串(如表单输入),可配合正则预校验,例如
str.matches("-?\d+")初步判断是否为整数格式 - 不推荐用
new Integer(str)等构造器方式,它已过时且同样会抛异常,且无额外价值
自动装箱与 parse 方法的区别
容易混淆的是 Integer.valueOf("123") —— 它也接受字符串,但内部仍调用 parseInt,再对结果进行装箱。区别在于:
-
parseInt返回基本类型int,无对象开销 -
valueOf返回Integer对象,且对 [-128, 127] 范围内数值有缓存优化 - 若后续需要对象(如存入集合),优先用
valueOf;若仅做计算,用parseInt更轻量


















