如何将字符转换为字符串?

我有一个char ,我需要一个String 。 我如何从一个转换到另一个?


你可以使用Character.toString(char) 。 请注意,此方法只是返回一个对String.valueOf(char)的调用,该String.valueOf(char)也可以工作。

正如其他人所指出的那样,字符串连接也是一种捷径:

String s = "" + 's';

但是这可以归结为:

String s = new StringBuilder().append("").append('s').toString();

这是因为StringBuilderchar[] (通过StringBuilder()过度分配到16 )支持,因此StringBuilder效率较低,只能由该String以防御性方式复制该String

String.valueOf(char)通过将char包装到一个单一元素数组中,并将其传递给包私有构造函数String(char[], boolean)来避免数组副本,从而进入后门。


很好的问题。 我有以下五种方法来做到这一点。

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

注意:Character.toString(char)返回String.valueOf(char)。 所以两者都是一样的。

String.valueOf(char[] value)调用new String(char[] value) ,然后设置value char数组。

public String(char value[]) {
    this.value = Arrays.copyOf(value, value.length);
}

另一方面, String.valueOf(char value)调用以下包私有构造函数。

String(char[] value, boolean share) {
    // assert share : "unshared not supported";
    this.value = value;
}

Java 8源代码中String.java源代码

因此String.valueOf(char)似乎是内存和速度方面最有效的方法,用于将char转换为String

  • 如何将原始字符转换为Java中的字符串
  • 如何使用示例将Char中的Char转换为String

  • 以下是将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/73645.html

    上一篇: How to convert a char to a String?

    下一篇: possibly lossy conversion strange error java