问题
What's the most efficient way to pass a single char to a method expecting a CharSequence?
This is what I've got:
textView.setText(new String(new char[] {c} ));
According to the answers given here, this is a sensible way of doing it where the input is a character array. I was wondering if there was a sneaky shortcut I could apply in the single-char case.
回答1:
textView.setText(String.valueOf(c))
回答2:
Looking at the implementation of the Character.toString(char c)
method reveals that they use almost the same code you use:
public String toString() {
char buf[] = {value};
return String.valueOf(buf);
}
For readability, you should just use Character.toString( c )
.
Another efficient way would probably be
new StringBuilder(1).append(c);
It's definitely more efficient that using the +
operator because, according to the javadoc:
The Java language provides special support for the string concatenation operator ( + ), and for conversion of other objects to strings. String concatenation is implemented through the
StringBuilder
(orStringBuffer
) class and its append method
回答3:
The most compact CharSequence you can get when you have a handful of chars is the CharBuffer. To initialize this with your char value:
CharBuffer.wrap(new char[]{c});
That being said, using Strings is a fair bit more readable and easy to work with.
回答4:
Shorthand, as in fewest typed characters possible:
c+""; // where c is a char
In full:
textView.setText(c+"");
回答5:
A solution without concatenation is this:
Character.valueOf(c).toString();
回答6:
char c = 'y';
textView.setText(""+c);
来源:https://stackoverflow.com/questions/6603084/most-efficient-way-to-convert-a-single-char-to-a-charsequence