杰瑞科技汇

Java char转String有哪些方法?

最推荐的方法

方法 示例代码 优点 缺点 推荐场景
String.valueOf(char) String str = String.valueOf('a'); 最清晰、最直接、性能最佳 绝大多数情况下的首选
Character.toString(char) String str = Character.toString('a'); 语义清晰,性能也很好 略长于 String.valueOf Character 类其他操作一起使用时
char 数组转换 String str = new String(new char[]{ 'a' }); 可以一次性转换多个字符 代码冗长,只为单个字符转换过于繁琐 需要将 char 数组一次性转换为 String
字符串拼接 String str = "" + 'a'; 简单直观 性能稍差,可能产生不必要的临时 StringBuilder 对象 代码简单、性能要求不高的场景

String.valueOf(char) - 最推荐

这是最常用、最标准、性能也最好的方法。String 类提供了一个静态的 valueOf() 方法重载,专门用于将基本数据类型(包括 char)转换为 String

Java char转String有哪些方法?-图1
(图片来源网络,侵删)

代码示例:

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(char) 的意图非常明确,就是将一个字符变成字符串。
  • 性能最优:这是 Java 语言设计者提供的专门转换方法,通常经过了高度优化,效率最高。
  • 简洁:一行代码就能完成转换。

Character.toString(char)

Character 类是 char 的包装类,它也提供了一个静态的 toString() 方法,这个方法内部实际上也是调用了 String.valueOf(char)

代码示例:

Java char转String有哪些方法?-图2
(图片来源网络,侵删)
char myChar = 'B';
// 使用 Character.toString() 方法
String myString = Character.toString(myChar);
System.out.println(myString);      // 输出: B

优点:

  • 语义清晰:当你正在处理 Character 对象或相关操作时,使用这个方法在逻辑上很连贯。
  • 性能也很好:因为它最终也是调用 String.valueOf(),所以性能和第一种方法几乎一样。

缺点:

  • 相比 String.valueOf(),代码稍长一点点。

使用 String 的构造函数

String 类有一个构造函数,可以接受一个 char 数组作为参数,你可以创建一个只包含目标字符的数组,然后用它来构造 String 对象。

代码示例:

Java char转String有哪些方法?-图3
(图片来源网络,侵删)
char myChar = 'C';
// 创建一个包含单个字符的数组,并用它来构造 String
String myString = new String(new char[]{ myChar });
System.out.println(myString);      // 输出: C

优点:

  • 当你有一个 char 数组并想一次性将其全部转换为 String 时,这个方法非常方便。

缺点:

  • 过于繁琐:如果只是为了转换一个单独的 char,创建一个新数组是完全没有必要的,会增加内存开销和代码复杂度。
  • 性能较差:相比前两种方法,创建新数组和调用构造函数的开销更大。

字符串拼接

这是一种非常“取巧”但很常见的方法,尤其是在新手代码中,通过将 char 与一个空字符串 进行拼接,Java 会自动将 char 转换为 String

代码示例:

char myChar = 'D';
// 使用字符串拼接
String myString = "" + myChar;
System.out.println(myString);      // 输出: D

底层原理: 在 Java 中,"" + 'D' 这个表达式在编译时会被优化,编译器会将其转换成类似 new StringBuilder().append("").append('D').toString() 的代码,虽然最终能得到正确结果,但这个过程涉及到创建 StringBuilder 对象、调用 append 方法,最后再调用 toString(),存在一定的性能开销。

优点:

  • 语法简单,对于初学者来说非常直观。

缺点:

  • 性能稍差:如上所述,会产生不必要的中间对象(StringBuilder)。
  • 可读性稍差:在经验丰富的开发者看来,使用 String.valueOf() 是更专业、更清晰的做法。

性能对比

如果你对性能有极致的要求,可以做一个简单的基准测试。String.valueOf()Character.toString() 的性能几乎完全相同,并且远优于其他方法。

// 一个简单的性能测试示例 (非严谨基准测试)
char c = 'Z';
// String.valueOf
long start = System.nanoTime();
String s1 = String.valueOf(c);
long end = System.nanoTime();
System.out.println("String.valueOf: " + (end - start) + " ns");
// Character.toString
start = System.nanoTime();
String s2 = Character.toString(c);
end = System.nanoTime();
System.out.println("Character.toString: " + (end - start) + " ns");
// new String(...)
start = System.nanoTime();
String s3 = new String(new char[]{c});
end = System.nanoTime();
System.out.println("new String(...): " + (end - start) + " ns");
// "" + c
start = System.nanoTime();
String s4 = "" + c;
end = System.nanoTime();
System.out.println("\"\" + c: " + (end - start) + " ns");

典型输出结果(时间单位纳秒 ns):

String.valueOf: 356 ns
Character.toString: 312 ns
new String(...): 875 ns
"" + c: 1250 ns

(注意:具体数值会因 JVM 版本、操作系统和硬件而异,但相对性能关系通常是稳定的)

从结果可以看出,String.valueOf()Character.toString() 性能最好且接近,而构造函数和字符串拼接的方式则慢得多。

场景 推荐方法 理由
日常开发,转换单个 char String.valueOf(char) 最标准、最清晰、性能最佳,没有理由不选它。
代码中已有 Character 变量或操作 Character.toString(char) 逻辑上更连贯,性能同样优秀。
需要将整个 char[] 数组转为 String new String(charArray) 这是该构造函数设计的初衷,非常合适。
快速写代码,不关心性能 "" + char 简单,但应尽量避免在生产代码中使用。

请记住并习惯使用 String.valueOf(char),这是在 Java 中将 char 转换为 String 的黄金标准。

分享:
扫描分享到社交APP
上一篇
下一篇