char c = 'c';
String s = Character.toString(c); // Most efficient way
s = new Character(c).toString(); // Same as above except new Character objects needs to be garbage-collected
s = c + ""; // Least efficient and most memory-inefficient, but common amongst beginners because of its simplicity
s = String.valueOf(c); // Also quite common
s = String.format("%c", c); // Not common
Formatter formatter = new Formatter();
s = formatter.format("%c", c).toString(); // Same as above
formatter.close();
String.valueOf(char) "gets in the back door"将 char 包装在单个元素数组中并将其传递给包私有构造函数String(char[], boolean),这样可以避免数组副本 .
2
像这样使用 Character.toString() 方法:
char mChar = 'l';
String s = Character.toString(mChar);
18
我已经尝试了这些建议但最终实现如下
editView.setFilters(new InputFilter[]{new InputFilter()
{
@Override
public CharSequence filter(CharSequence source, int start, int end,
Spanned dest, int dstart, int dend)
{
String prefix = "http://";
//make sure our prefix is visible
String destination = dest.toString();
//Check If we already have our prefix - make sure it doesn't
//get deleted
if (destination.startsWith(prefix) && (dstart <= prefix.length() - 1))
{
//Yep - our prefix gets modified - try preventing it.
int newEnd = (dend >= prefix.length()) ? dend : prefix.length();
SpannableStringBuilder builder = new SpannableStringBuilder(
destination.substring(dstart, newEnd));
builder.append(source);
if (source instanceof Spanned)
{
TextUtils.copySpansFrom(
(Spanned) source, 0, source.length(), null, builder, newEnd);
}
return builder;
}
else
{
//Accept original replacement (by returning null)
return null;
}
}
}});
31
好问题 . 我有以下五种方法可以做到这一点 .
1. String stringValueOf = String.valueOf('c'); // most efficient
2. String stringValueOfCharArray = String.valueOf(new char[]{x});
3. String characterToString = Character.toString('c');
4. String characterObjectToString = new Character('c').toString();
// Although this method seems very simple,
// this is less efficient because the concatenation
// expands to new StringBuilder().append(x).append("").toString();
5. String concatBlankString = 'c' + "";
6. String fromCharArray = new String(new char[]{x});
char c = 'a';
String s = String.valueOf(c); // fastest + memory efficient
String s = Character.toString(c);
String s = new String(new char[]{c});
String s = String.valueOf(new char[]{c});
String s = new Character(c).toString();
String s = "" + c; // slowest + memory inefficient
588
I am converting Char Array to String
Char[] CharArray={ 'A', 'B', 'C'};
String text = String.copyValueOf(CharArray);
10
我们有各种方法将 char 转换为 String . One 方法是在 Character 类中使用静态方法 toString() :
11 回答
试试这个:
Character.toString(aChar)
或只是这个:aChar + ""
使用以下任何一种方法:
以下是一些方法,没有特别的顺序:
你可以使用Character.toString(char) . 请注意,此方法只是返回对String.valueOf(char)的调用,这也适用 .
正如其他人所说,字符串连接也可以作为一种捷径:
但这归结为:
这是效率较低的,因为
StringBuilder
由char[]
(由StringBuilder()过度分配到16
)支持,只有该数组被生成的String
防御性地复制 .String.valueOf(char)
"gets in the back door"将char
包装在单个元素数组中并将其传递给包私有构造函数String(char[], boolean),这样可以避免数组副本 .像这样使用
Character.toString()
方法:我已经尝试了这些建议但最终实现如下
好问题 . 我有以下五种方法可以做到这一点 .
String.valueOf(char[] value)
调用new String(char[] value)
,后者又设置value
char数组 .另一方面
String.valueOf(char value)
调用以下 package private constructor.来自
String.java
的源代码Java 8 source codeHow to convert primitive char to String in Java
How to convert Char to String in Java with Example
下面是将char c转换为String s的各种方法(按速度和效率的降序排列)
I am converting Char Array to String
我们有各种方法将
char
转换为String
. One 方法是在Character
类中使用静态方法toString()
:实际上这个
toString
方法在内部使用String
类的valueOf
方法,该方法使用了char数组:所以 second 方式是直接使用它:
String
类中的valueOf
方法使用char数组:所以 third 方法是使用匿名数组来包装单个字符,然后将其传递给
String
构造函数:fourth 方式是使用连接:
这实际上将使用
StringBuilder
类中的append
方法,这在我们在循环中进行连接时实际上是首选的 .正如@WarFox所说 - 有6种方法可以将char转换为字符串 . 然而,最快的一个是通过连接,尽管上面的答案表明它是
String.valueOf
. 以下基准证明:结果:
如您所见,最快的一个是
c + ""
或"" + c
;这种性能差异是由于
-XX:+OptimizeStringConcat
优化 . 你可以阅读它here .