在 Java 中,将数字(如 int、long、double 等)转换为字符串(String)有多种方法,以下是几种常用方法的详细说明和示例代码。
使用 String.valueOf()(推荐)
这是最常用且最安全的方法,适用于所有基本数据类型(int, long, double, float, boolean, char)和包装类(Integer, Long, Double 等)。
示例代码
int num = 123; String str1 = String.valueOf(num); // "123" double d = 45.67; String str2 = String.valueOf(d); // "45.67" boolean flag = true; String str3 = String.valueOf(flag); // "true"
优点
- 简洁直观,是 Java 官方推荐的方式。
- 自动处理
null(如果传入null,结果就是"null"字符串)。
使用 Integer.toString() / Double.toString() 等
每种基本数据类型都有对应的包装类,每个包装类都有一个 toString() 方法可以将其转换为字符串。
示例代码
int num = 123; String str1 = Integer.toString(num); // "123" double d = 45.67; String str2 = Double.toString(d); // "45.67"
注意
- 如果传入
null,会抛出NullPointerException(与String.valueOf()不同)。
使用空字符串拼接("" + num)
这是一种简写方式,但 不推荐,因为它会创建一个 StringBuilder,性能稍差,且可读性不如 String.valueOf()。


示例代码
int num = 123; String str = "" + num; // "123"
缺点
- 代码不够清晰,容易让其他开发者困惑。
- 性能略低于
String.valueOf()。
使用 String.format()
如果需要格式化数字(如补零、保留小数位数等),可以使用 String.format()。
示例代码
int num = 123;
String str1 = String.format("%d", num); // "123"
double d = 45.6789;
String str2 = String.format("%.2f", d); // "45.68"(保留两位小数)
适用场景
- 需要格式化输出时(如金额、百分比等)。
使用 DecimalFormat(适用于复杂格式化)
如果需要更复杂的数字格式(如千位分隔符、货币符号等),可以使用 java.text.DecimalFormat。
示例代码
import java.text.DecimalFormat;
double num = 1234567.89;
DecimalFormat df = new DecimalFormat("#,###.00"); // 格式化为 1,234,567.89
String str = df.format(num); // "1,234,567.89"
适用场景
- 需要本地化格式(如货币、日期等)。
| 方法 | 适用场景 | 示例 | 备注 |
|---|---|---|---|
String.valueOf() |
推荐,适用于所有基本类型 | String.valueOf(123) |
简洁、安全 |
Integer.toString() |
适用于特定类型 | Integer.toString(123) |
不能处理 null |
"" + num |
简单场景 | "" + 123 |
不推荐,性能稍差 |
String.format() |
需要格式化 | String.format("%d", 123) |
适用于格式化输出 |
DecimalFormat |
复杂格式化 | new DecimalFormat("#,###").format(123456) |
适用于货币、千位分隔符 |
最佳实践
- 默认使用
String.valueOf(),因为它最通用且安全。 - 如果需要格式化,使用
String.format()或DecimalFormat。
希望这些方法能帮助你解决 Java 中数字转字符串的问题!如果有更具体的需求,可以进一步讨论。 😊

