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?


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.


Nice question. I've got of the following five 6 methods to do it.

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});

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 .

  • How to convert primitive char to String in Java
  • How to convert Char to String in Java with Example

  • 以下是将char c转换为String s的各种方法(按照速度和效率的降序排列)

    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
    
    链接地址: http://www.djcxy.com/p/73646.html

    上一篇: 为什么我的代码不能编译?

    下一篇: 如何将字符转换为字符串?