How to convert a char to a String?
I have a char
and I need a String
. How do I convert from one to the other?
Solution 1:
You can use Character.toString(char)
. Note that this method simply returns a call to String.valueOf(char)
, which also works.
As others have noted, string concatenation works as a shortcut as well:
String s = "" + 's';
But this compiles down to:
String s = new StringBuilder().append("").append('s').toString();
which is less efficient because the StringBuilder
is backed by a char[]
(over-allocated by StringBuilder()
to 16
), only for that array to be defensively copied by the resulting String
.
String.valueOf(char)
"gets in the back door" by wrapping the char
in a single-element array and passing it to the package private constructor String(char[], boolean)
, which avoids the array copy.
Solution 2:
I've got of the following five six methods to do it.
// Method #1
String stringValueOf = String.valueOf('c'); // most efficient
// Method #2
String stringValueOfCharArray = String.valueOf(new char[]{x});
// Method #3
String characterToString = Character.toString('c');
// Method #4
String characterObjectToString = new Character('c').toString();
// Method #5
// Although this approach seems very simple,
// this is less efficient because the concatenation
// expands to a StringBuilder.
String concatBlankString = 'c' + "";
// Method #6
String fromCharArray = new String(new char[]{x});
Note: Character.toString(char) returns String.valueOf(char). So effectively both are same.
String.valueOf(char[] value)
invokes new String(char[] value)
, which in turn sets the value
char array.
public String(char value[]) {
this.value = Arrays.copyOf(value, value.length);
}
On the other hand String.valueOf(char value)
invokes the following package private constructor.
String(char[] value, boolean share) {
// assert share : "unshared not supported";
this.value = value;
}
Source code from String.java
in Java 8 source code
Hence
String.valueOf(char)
seems to be most efficient method, in terms of both memory and speed, for convertingchar
toString
.
Sources:
- How to convert primitive char to String in Java
- How to convert Char to String in Java with Example
Solution 3:
Below are various ways to convert to char c to String s (in decreasing order of speed and efficiency)
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
Solution 4:
Use the Character.toString()
method like so:
char mChar = 'l';
String s = Character.toString(mChar);
Solution 5:
Use any of the following:
String str = String.valueOf('c');
String str = Character.toString('c');
String str = 'c' + "";