Java包装类的parseXxx()方法可将字符串转基本类型,但要求格式严格、非null且无首尾空格,否则抛NumberFormatException;valueOf()返回包装对象且有缓存机制。

Java 中包装类提供静态方法,可将字符串安全转换为对应的基本数据类型,但要求字符串格式严格匹配,否则会抛出 NumberFormatException。
使用 parseXxx() 方法解析字符串
每种基本类型的包装类都提供了对应的 parseXxx(String s) 静态方法,例如:
-
Integer.parseInt("123")→ 返回int值 123 -
Double.parseDouble("3.14")→ 返回double值 3.14 -
Boolean.parseBoolean("true")→ 返回boolean值true(注意:只识别 "true",忽略大小写;其余均为false) -
Long.parseLong("-9223372036854775808")→ 支持带符号长整型
这些方法不接受 null,也不接受首尾空格(除非先调用 trim()),例如 Integer.parseInt(" 42 ") 会报错。
处理空格和异常的实用建议
为避免运行时异常,推荐在解析前做基础校验:
立即学习“Java免费学习笔记(深入)”;
- 先判空:
if (str == null || str.trim().isEmpty()) - 再 trim:
Integer.parseInt(str.trim()) - 用 try-catch 捕获
NumberFormatException,给出明确提示或默认值
例如:int age = 0;<br>try { age = Integer.parseInt(input); }<br>catch (NumberFormatException e) { System.err.println("年龄格式错误:" + input); }
valueOf() 与 parseXxx() 的区别
valueOf(String s) 返回的是包装类对象(如 Integer),而 parseXxx() 返回基本类型(如 int)。两者内部逻辑一致,都会校验格式。
-
Integer.valueOf("100")→ 返回Integer对象(可能从缓存池取值) -
Integer.parseInt("100")→ 返回int基本值 - 对于
Boolean、Byte、Short、Integer、Long,valueOf()在小范围值(如 -128 到 127)会复用缓存对象
特殊类型注意事项
不同类型的解析规则略有差异:
-
Character没有parseChar(),单字符字符串需用str.charAt(0) -
Float和Double支持科学计数法,如"1.23e-4" -
Integer.parseInt("0x1F", 16)支持指定进制(第二个参数为 radix),可解析十六进制、二进制等 -
Boolean.parseBoolean()不校验合法性——只有 "true"(不区分大小写)返回true,其余全为false,不会抛异常


















