这是在 Java 中将 char 转换为 String 的正确方法吗?
Is this the correct way to convert a char to a String in Java?
在为需要两个 String
的返回 boolean
的函数编写单元测试时,我需要测试字母表中的每个字符 ('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());
}
这是将 char
转换为 Java 中的 String
的可靠方法吗?这是首选方式吗?我对 Java 了解不多,所以想对此进行一些说明。
最短解:
char c = 'a';
String s = "" + c;
最干净(可能也是最有效1)的解决方案:
char c = 'a';
String s1 = String.valueOf(c);
// or
String s2 = Character.toString(c);
与您的方法相比,以上方法避免了将原语装入 Character
对象的开销。
1 第一种方法中字符串连接的轻微低效可能会被编译器或 运行 时间优化掉,所以一个 (如果有人愿意的话)真的需要 运行 一个微型基准来确定实际性能。像这样的微优化很少值得付出努力,依靠连接来强制字符串转换看起来也不太好。
在为需要两个 String
的返回 boolean
的函数编写单元测试时,我需要测试字母表中的每个字符 ('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());
}
这是将 char
转换为 Java 中的 String
的可靠方法吗?这是首选方式吗?我对 Java 了解不多,所以想对此进行一些说明。
最短解:
char c = 'a';
String s = "" + c;
最干净(可能也是最有效1)的解决方案:
char c = 'a';
String s1 = String.valueOf(c);
// or
String s2 = Character.toString(c);
与您的方法相比,以上方法避免了将原语装入 Character
对象的开销。
1 第一种方法中字符串连接的轻微低效可能会被编译器或 运行 时间优化掉,所以一个 (如果有人愿意的话)真的需要 运行 一个微型基准来确定实际性能。像这样的微优化很少值得付出努力,依靠连接来强制字符串转换看起来也不太好。