最推荐的方法
对于绝大多数情况,使用 String.valueOf(char) 是最推荐、最清晰、最安全的方法。

使用 String.valueOf(char) (最推荐)
这是官方提供的、最直接、最清晰的方法,它专门用于将各种基本数据类型(包括 char)转换为 String。
代码示例:
char myChar = 'A'; // 使用 String.valueOf() 进行转换 String myString = String.valueOf(myChar); System.out.println(myString); // 输出: A System.out.println(myString.getClass().getName()); // 输出: java.lang.String
为什么推荐?
- 可读性强:代码意图非常明确,就是将一个值转换为字符串。
- 健壮性:
String.valueOf()方法对null有很好的处理(虽然char是基本类型,不存在null,但这个习惯很好)。 - 标准做法:这是 Java API 设计者提供的标准转换方式。
使用 char 数组的转换
一个 String 在内部是由字符数组 (char[]) 表示的,你可以创建一个只包含该 char 的数组,然后用它来构造 String。

代码示例:
char myChar = 'B';
// 1. 创建一个包含单个字符的数组
char[] charArray = { myChar };
// 2. 使用该数组构造 String
String myString = new String(charArray);
System.out.println(myString); // 输出: B
为什么不推荐作为首选?
虽然这个方法完全可行,但它比 String.valueOf() 更冗长,你需要手动创建一个数组,然后使用 new String() 构造函数。String.valueOf() 在内部可能也做了类似的事情,但它为你封装了这些细节,使代码更简洁。
使用 Character.toString(char)
Character 是 char 的包装类,它也提供了一个 toString() 方法来执行转换。
代码示例:

char myChar = 'C'; // 使用 Character.toString() 进行转换 String myString = Character.toString(myChar); System.out.println(myString); // 输出: C
为什么不推荐作为首选?
这个方法也很好,它和 String.valueOf(char) 在功能上是等价的,查看 Character.toString() 的源码,你会发现它内部就是调用了 String.valueOf()。
public static String toString(char c) {
return String.valueOf(c);
}
从代码简洁性角度,直接调用 String.valueOf() 更少一层间接调用,但性能上可以忽略不计,两者都可以接受,String.valueOf() 更为通用。
使用字符串连接 (不推荐,但常见)
你可以将一个 char 与一个空字符串 连接起来,Java 会自动将 char 转换为 String。
代码示例:
char myChar = 'D'; // 使用字符串连接 String myString = "" + myChar; System.out.println(myString); // 输出: D
为什么不推荐?
- 可读性差:意图不如
String.valueOf()明确,看起来像是在做拼接,而不是类型转换。 - 性能稍差:在底层,这会创建一个临时的
StringBuilder对象来执行连接操作,虽然现代 JVM 对此优化得很好,但理论上比直接调用valueOf()要多一个步骤。 - 容易出错:如果误写成
char myChar = 'D'; String myString = myChar;,编译器会报错,因为char不能直接赋给String,而"" + myChar则能“神奇地”工作,这种“魔法”有时会降低代码的可维护性。
直接使用字符串字面量 (仅适用于已知字符)
如果你只是想创建一个只包含该字符的字符串字面量,最简单的方法就是直接使用单引号或双引号。
代码示例:
// 如果你已经有了一个字符,想把它变成字符串 char myChar = 'E'; String myString = String.valueOf(myChar); // 推荐方式 // 但如果你从一开始就知道要创建一个字符串,直接写字符串字面量更简单 String anotherString = "E"; // 直接创建 System.out.println(myString); System.out.println(anotherString);
这种方法不适用于“转换”一个已存在的 char 变量,而是用于直接定义一个字符串。
性能对比
对于这种简单的操作,性能差异可以忽略不计,现代 Java 虚拟机(JVM)非常智能,能够对这些代码进行高度优化,你几乎无法在真实的业务应用中测量出它们之间的性能区别。
不要为了微乎其微的性能提升而牺牲代码的可读性和可维护性。
| 方法 | 示例 | 优点 | 缺点 | 推荐度 |
|---|---|---|---|---|
String.valueOf() |
String.valueOf('A') |
最清晰、最标准、可读性最强 | 无 | ⭐⭐⭐⭐⭐ (强烈推荐) |
Character.toString() |
Character.toString('A') |
可读性好,功能明确 | 比直接调用 String.valueOf() 多一层间接调用 |
⭐⭐⭐⭐ |
new String(char[]) |
new String(new char[]{'A'}) |
逻辑清晰(基于String的内部结构) | 代码冗长,不简洁 | ⭐⭐ |
字符串连接 "" + char |
"" + 'A' |
代码简短 | 可读性差,意图不明确,有潜在性能开销 | ⭐ |
| 字符串字面量 | "A" |
最简单直接 | 不适用于转换已存在的 char 变量 |
N/A |
最终建议:
在任何需要将 char 转换为 String 的地方,都毫不犹豫地使用 String.valueOf(yourChar),这是最符合 Java 编码规范和最佳实践的选择。
