最推荐、最简洁、性能最好的方法是使用 String.valueOf(char)。

char myChar = 'A'; String myString = String.valueOf(myChar); // 推荐
使用 String.valueOf(char) (最推荐)
这是 Java 官方提供的、最标准、最清晰的方法,它专门用于将各种基本数据类型(包括 char)转换为 String。
特点:
- 可读性强:代码意图非常明确,就是要把一个值转换成字符串。
- 性能高:这是专门为此优化的静态方法,通常效率很高。
- 健壮性:能正确处理所有
char值,包括特殊字符(如'\n','\t')和空字符'\0'。
示例代码:
public class CharToStringExample {
public static void main(String[] args) {
char ch1 = 'H';
char ch2 = '!';
char ch3 = '\n'; // 换行符
// 使用 String.valueOf()
String str1 = String.valueOf(ch1);
String str2 = String.valueOf(ch2);
String str3 = String.valueOf(ch3);
System.out.println("str1: " + str1); // 输出: str1: H
System.out.println("str2: " + str2); // 输出: str2: !
System.out.println("str3: " + str3); // 输出: str3:
// (输出一个空行,因为 \n 是换行符)
System.out.println("str1 的类型是: " + str1.getClass().getName()); // 输出: java.lang.String
}
}
使用 Character.toString(char)
Character 类是 char 的包装类,它也提供了一个 toString() 方法来完成这个转换。

特点:
- 同样优秀:性能和
String.valueOf()非常接近,通常底层实现也是类似的。 - 语义清晰:明确表示是
char对象的字符串表示形式。
示例代码:
public class CharToStringExample {
public static void main(String[] args) {
char ch = 'W';
String str = Character.toString(ch);
System.out.println(str); // 输出: W
}
}
String.valueOf() vs Character.toString():
在大多数情况下,这两者可以互换使用。String.valueOf() 在某些情况下可能更通用,因为它可以接受多种参数类型,而 Character.toString() 更专一,选择哪个更多是个人或团队的编码风格偏好。
使用 char 数组的转换 (不推荐,但需要了解)
String 类有一个构造函数,它接受一个 char 数组,因为一个 char 可以被看作是一个只包含一个元素的数组,所以你也可以用这种方式来转换。

特点:
- 语法繁琐:需要创建一个新数组,代码冗长。
- 性能稍差:涉及到数组的创建,比前两种方法效率低。
- 不推荐:除非你有特殊需求(比如从一个
char数组中截取一部分来创建String),否则不要用这种方法来转换单个char。
示例代码:
public class CharToStringExample {
public static void main(String[] args) {
char ch = 'Y';
// 创建一个只包含 ch 的数组,然后用它来构造 String
String str = new String(new char[]{ch});
System.out.println(str); // 输出: Y
}
}
使用空字符串拼接 (不推荐,但很常见)
这是一种“取巧”的方法,利用了 Java 中字符串连接的特性,当任何类型与 String 相连接时,Java 会自动调用其 toString() 方法。
特点:
- 语法简单:对于初学者来说,
"" + 'c'看起来很直观。 - 性能较低:会创建一个新的
StringBuilder对象来完成拼接操作,有额外的开销。 - 可能隐藏错误:
char变量可能为null(虽然char是基本类型,不可能为null,但如果是一个Character对象),可能会导致NullPointerException,更重要的是,这种写法不够“专业”,可能会被代码审查工具标记。
示例代码:
public class CharToStringExample {
public static void main(String[] args) {
char ch = 'Z';
String str = "" + ch; // 等价于 new StringBuilder().append("").append('Z').toString();
System.out.println(str); // 输出: Z
}
}
使用 String.format() (特定场景)
如果你需要将 char 放入一个格式化的字符串中,可以使用 String.format()。
特点:
- 用于格式化:主要目的是创建格式化的字符串,而不是单纯的类型转换。
- 性能开销大:比前几种方法慢得多,因为它涉及到解析格式化字符串。
示例代码:
public class CharToStringExample {
public static void main(String[] args) {
char ch = '7';
String str = String.format("%c", ch); // %c 是 char 的格式说明符
System.out.println(str); // 输出: 7
}
}
总结与最佳实践
| 方法 | 示例 | 优点 | 缺点 | 推荐度 |
|---|---|---|---|---|
String.valueOf() |
String.valueOf('c') |
最佳实践,清晰,高效,标准 | 无 | ⭐⭐⭐⭐⭐ (首选) |
Character.toString() |
Character.toString('c') |
清晰,高效,标准 | 略长于 String.valueOf() |
⭐⭐⭐⭐⭐ (强烈推荐) |
new String(new char[]{...}) |
new String(new char[]{'c'}) |
- | 语法繁琐,性能差 | ⭐ (不推荐) |
空字符串拼接 "" + 'c' |
"" + 'c' |
语法直观 | 性能较低,不够专业 | ⭐⭐ (不推荐,但常见) |
String.format() |
String.format("%c", 'c') |
用于格式化场景 | 性能开销大,不适合简单转换 | ⭐ (特定场景使用) |
在您的日常 Java 编程中,请始终优先使用 String.valueOf(char) 或 Character.toString(char),它们是转换 char 到 String 最可靠、最高效的方式。
