How to convert a char to a String? How to convert a char to a String? java java

How to convert a char to a String?


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.


I've got of the following five six methods to do it.

// Method #1String stringValueOf = String.valueOf('c'); // most efficient// Method #2String stringValueOfCharArray = String.valueOf(new char[]{x});// Method #3String characterToString = Character.toString('c');// Method #4String 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 #6String 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 converting char to String.

Sources:

  1. How to convert primitive char to String in Java
  2. How to convert Char to String in Java with Example


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 efficientString 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