这是在Java中将char转换为字符串的正确方法吗?

2022-09-01 19:01:32

在为需要两个 s 的函数返回编写单元测试时,我需要将字母表 (-) 的每个字符作为参数之一逐一进行测试,因此我编写了以下内容来执行此操作:booleanString'a''z'

for(char c = 'a'; c <= 'z'; c++)
{
    assertTrue(MyClass.MyFunction(testSubject, new String(c));
} 

我本来以为这是允许的,但事实并非如此,所以我只是这样做:

for(char c = 'a'; c <= 'z'; c++)
{
    assertTrue(MyClass.MyFunction(testSubject, ((Character) c).toString());
} 

这是在Java中将a转换为a的可靠方法吗?这是首选方式吗?我对Java了解不多,所以希望对此进行一些澄清。charString


答案 1

最短的解决方案:

char c = 'a';
String s = "" + c;

最干净(也可能是最有效的1)解决方案:

char c = 'a';

String s1 = String.valueOf(c);
// or
String s2 = Character.toString(c);

与您的方法相比,上述方法可防止了必须将基元框入对象的开销。Character


1 第一种方法中字符串串联的轻微低效率可能会被编译器或运行时优化掉,因此一种方法(如果一个人如此倾向)确实必须运行微基准来确定实际性能。像这样的微优化很少值得付出努力,依靠串联来强制字符串转换看起来不是很好。


答案 2