我有一个char,我需要一个String。如何从一个转换为另一个?
char
String
好问题。我有以下五种 6种方法可以做到这一点。
// #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(); // #5 // Although this method seems very simple, // this is less efficient because the concatenation // expands to new StringBuilder().append(x).append("").toString(); String concatBlankString = 'c' + ""; // #6 String fromCharArray = new String(new char[]{x});
注意:Character.toString(char)返回String.valueOf(char)。因此有效地两者是相同的。
Character.toString(char)
String.valueOf(char)
String.valueOf(char[] value)调用new String(char[] value),这又设置了valuechar数组。
String.valueOf(char[] value)
new String(char[] value)
valuechar
public String(char value[]) { this.value = Arrays.copyOf(value, value.length); }
另一方面,String.valueOf(char value)调用以下程序包私有构造函数。
String.valueOf(char value)
String(char[] value, boolean share) { // assert share : "unshared not supported"; this.value = value; }
从源代码String.java中的Java 8的源代码
String.java
因此String.valueOf(char)似乎是最有效的方法,在这两个存储器和速度方面,用于转换char到String。
String.valueOf(char)
你可以使用Character.toString(char)。请注意,此方法仅返回对的调用String.valueOf(char),该调用也有效。
Character.toString(char)
正如其他人指出的那样,字符串连接也可以用作快捷方式:
String s = "" + 's';
但这可以归结为:
String s = new StringBuilder().append("").append('s').toString();
因为它是低效率的StringBuilder,通过一个备份char[](通过在分配StringBuilder()给16),只对阵列使所得被防守复制String。
StringBuilder
StringBuilder()
String.valueOf(char)通过将char in 包裹在一个单元素数组中并将其传递给package private构造函数来“进入后门” String(char[], boolean),从而避免了数组复制。
String(char[], boolean)