parsexxx返回基本类型,高效无对象开销;valueof返回缓存包装对象,适合集合或方法调用。二者均抛numberformatexception,反向转换应使用string.valueof等。

Java 包装类中,parseXxx 和 valueOf 都能将字符串转为基本类型或包装对象,但它们的用途、返回类型和性能表现不同——选错方法可能引发异常或浪费内存。
parseXxx:专注解析,返回基本类型
parseInt、parseDouble 等静态方法专用于将字符串解析为对应的基本数据类型(如 int、double),失败时抛出 NumberFormatException。
- 不接受
null,空字符串或格式错误都会直接报错 - 适合明确需要基本类型值的场景,比如做数学计算、传参给只接收
int的方法 - 无对象创建开销,纯解析逻辑,轻量高效
例如:Integer.parseInt("123") → 返回 int 值 123;Integer.parseInt("abc") → 抛出 NumberFormatException。
valueOf:返回包装对象,带缓存优化
Integer.valueOf("123") 这类方法返回的是包装类实例(如 Integer),而非基本类型。关键优势在于对小整数有缓存机制(默认 -128 到 127),重复调用相同数值字符串会复用已有对象。
Java JDK 25 来自 OpenJDK 官方归档,版本为 JDK 25,本条下载地址已指向官方 Windows x64 zip 安装包直链,适合调试旧项目或兼容旧版 Java 运行环境。
- 同样校验格式,非法输入也会抛
NumberFormatException - 比
new Integer(String)更推荐,避免无谓对象创建 - 注意:
Double.valueOf和Float.valueOf不缓存,Boolean.valueOf缓存 true/false 两个实例
例如:Integer.valueOf("100") 和 Integer.valueOf("100") 返回同一个对象(在缓存范围内);而 Integer.valueOf("200") 每次都新建对象。
字符串转数字:按需选择,别混用
如果后续要调用包装类特有方法(如 intValue()、compareTo())或需放入集合(List<integer></integer>),优先用 valueOf;如果只是立刻参与运算、赋值给基本类型变量,parseXxx 更直接,也略快一点。
- 避免写
Integer.valueOf("123").intValue()—— 多此一举,直接用parseInt - 不要用
parseXxx赋值给包装类型变量(如Integer i = Integer.parseInt("123")),虽然能编译(自动装箱),但多了一次不必要的装箱操作 - 统一异常处理策略:两种方法都抛相同异常,可共用一套 try-catch
数字转字符串:不用 parseXxx / valueOf
这两个方法只负责「字符串→数字」,反向转换应使用其他方式:
- 基本类型转字符串:推荐
String.valueOf(123)(空安全,支持 null 入参)或直接字符串拼接("" + 123) - 包装对象转字符串:调用
toString()或继续用String.valueOf(obj) - 不建议用
new Integer(123).toString(),冗余创建对象
例如:String.valueOf(45.6) → "45.6";Double.valueOf("45.6").toString() → 同样结果,但多绕一步。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










