String.valueOf()最安全,因它对null返回"null"不抛异常,且提供各基本类型重载方法避免装箱和判空;而toString()遇null必抛NullPointerException,+""则语义不清且有性能开销。

Java 中的 String.valueOf() 是最安全、推荐的将基本数据类型转为字符串的方式,它内部做了空值防护,不会抛出 NullPointerException。
为什么优先用 valueOf 而不是 toString()
基本数据类型的包装类(如 Integer、Double)虽然也有 toString() 方法,但它们不能直接处理 null 值。而 String.valueOf() 对所有重载版本都做了判空处理:传入 null 时返回字符串 "null",而不是报错。
-
Integer i = null; String s1 = i.toString();→ 抛出NullPointerException -
Integer i = null; String s2 = String.valueOf(i);→ 返回"null",安全
支持的基本类型和常见重载方法
String.valueOf() 提供了针对每种基本类型及其包装类的重载方法,包括:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
-
valueOf(boolean b)→ 如String.valueOf(true)返回"true" -
valueOf(char c)→ 如String.valueOf('A')返回"A" -
valueOf(int i)→ 如String.valueOf(123)返回"123" -
valueOf(long l)→ 如String.valueOf(1234567890123L) -
valueOf(float f)→ 如String.valueOf(3.14f)返回"3.14" -
valueOf(double d)→ 如String.valueOf(2.71828) -
valueOf(Object obj)→ 自动调用obj.toString(),若 obj 为null则返回"null"
和 + 运算符拼接字符串的区别
虽然 "" + 123 也能得到 "123",但它本质是编译器优化的字符串拼接,底层会创建 StringBuilder,且语义不清晰;String.valueOf() 目的明确、性能稳定、可读性强。
立即学习“Java免费学习笔记(深入)”;
- ✅ 推荐:
String s = String.valueOf(42); - ⚠️ 不推荐(尤其在循环或高频场景):
String s = "" + 42; - ❌ 错误(对 null 不安全):
String s = someInteger.toString();
实际使用小建议
日常开发中,遇到需要把数字、布尔、字符等转成字符串的场景,直接用 String.valueOf(x) 即可。它简洁、健壮、无需额外判空。
- 日志打印:
log.info("用户ID: " + String.valueOf(userId)); - JSON 构建(配合 Jackson/Gson 时也更兼容)
- 数据库参数绑定前格式化(如 SQL 拼接虽不推荐,但调试时常用)

















