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

2022-08-31 04:00:51

我有一个,我需要一个.如何从一个转换为另一个?charString


答案 1

您可以使用 Character.toString(char)。请注意,此方法仅返回对 String.valueOf(char) 的调用,该调用也有效。

正如其他人所指出的,字符串串联也可以作为快捷方式:

String s = "" + 's';

但这可以归结为:

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

效率较低,因为 由 a(由 StringBuilder() 过度分配到 )支持,仅对于该数组由结果进行防御性复制。StringBuilderchar[]16String

String.valueOf(char)“进入后门”,方法是将 包装在单元素数组中,并将其传递给包私有构造函数 String(char[], boolean),从而避免数组复制。char


答案 2

我有以下种六种方法来做到这一点。

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

注意:Character.toString(char) 返回 String.valueOf(char)。因此,实际上两者是相同的。

String.valueOf(char[] value)invoke ,这又设置了 char 数组。new String(char[] value)value

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

来自 String.java Java 8 源代码中的源代码

因此,就内存和速度而言,似乎是转换为最有效的方法。String.valueOf(char)charString

来源:

  1. 如何在Java中将基元字符转换为字符串
  2. 如何在Java中将Char转换为字符串与示例