如何将字符转换为字符串?
我有一个char
,我需要一个String
。 我如何从一个转换到另一个?
你可以使用Character.toString(char)
。 请注意,此方法只是返回一个对String.valueOf(char)
的调用,该String.valueOf(char)
也可以工作。
正如其他人所指出的那样,字符串连接也是一种捷径:
String s = "" + 's';
但是这可以归结为:
String s = new StringBuilder().append("").append('s').toString();
这是因为StringBuilder
由char[]
(通过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
。
以下是将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