我有一个字符数组:
char[] a = {'h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd'};
我的当前解决方案是执行
String b = new String(a);
但肯定有更好的方法吧?
不,那个解决方案是完全正确且非常简洁的。
但请注意,这是一个非常不寻常的情况:因为在Java中,String
被特殊处理,即使是"foo"
也实际上是一个String
。因此,在正常代码中不需要将字符串拆分为单个char
并将它们连接起来。
与C/C++相比,"foo"
在一侧是由零字节终止的一组char
,在另一侧是string
,由于遗留方法而存在许多转换。
String text = String.copyValueOf(data);
或者
String text = String.valueOf(data);
可以说是更好的选择(封装了new String
调用)。
String(char[])
或其变体。而复制的部分是在String(char[])
内完成的。因此,与其他valueOf
方法保持对称性以外,直接调用没有任何好处。 - A.H.String
的实现,或者可以在运行时选择多个竞争实现,则使用静态工厂方法是有意义的。这种情况不会发生在像String
这样的低级别事物上。因此,我的前提是:使用最小的合适的工具,而不是可用的最大的工具。 - A.H.CharSequence
接口的事实表明了你所说的“像字符串这样的低级东西不会发生这种情况”的缺陷 - 他们没有改变字符串中发生的事情,因为他们早期就与之绑定,现在他们希望他们不会这样做。 - corsiKa这将把字符数组转换回字符串:
char[] charArray = {'a', 'b', 'c'};
String str = String.valueOf(charArray);
String str = "wwwwww3333dfevvv";
char[] c = str.toCharArray();
现在要将字符数组转换为字符串,有两种方法。
Arrays.toString(c);
返回字符串[w, w, w, w, w, w, 3, 3, 3, 3, d, f, e, v, v, v]
。
还有:
String.valueOf(c)
返回字符串wwwwww3333dfevvv
。
总结:注意Arrays.toString(c)
,因为你会得到"[w, w, w, w, w, w, 3, 3, 3, 3, d, f, e, v, v, v]"
而不是"wwwwww3333dfevvv"
。
char[]
与具有相同字符的非装箱字符串相同。 通过从您的字符数组创建一个新的字符串
new String(char[])
你基本上是在告诉编译器在字符数组周围自动装箱一个字符串对象。
private static void h() {
String helloWorld = "helloWorld";
System.out.println(helloWorld);
char [] charArr = helloWorld.toCharArray();
System.out.println(String.valueOf(charArr));
}
package naresh.java;
public class TestDoubleString {
public static void main(String args[]){
String str="abbcccddef";
char charArray[]=str.toCharArray();
int len=charArray.length;
for(int i=0;i<len;i++){
//if i th one and i+1 th character are same then update the charArray
try{
if(charArray[i]==charArray[i+1]){
charArray[i]='0';
}}
catch(Exception e){
System.out.println("Exception");
}
}//finally printing final character string
for(int k=0;k<charArray.length;k++){
if(charArray[k]!='0'){
System.out.println(charArray[k]);
} }
}
}
尝试使用java.util.Arrays
。此模块具有多种与数组相关的有用方法。
Arrays.toString(your_array_here[]);
//Given Character Array
char[] a = {'h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd'};
//Converting Character Array to String using String funtion
System.out.println(String.valueOf(a));
//OUTPUT : hello world
String stringValue =
Arrays.stream(new char[][]{a}).map(String::valueOf).collect(Collectors.joining());
试试这个
Arrays.toString(array)
Arrays.toString(new char[] {'a', 'b', 'c'})
返回 "[a, b, c]"; 而不是 "abc"。 - Prasad Karunagoda
String
构造函数意味着字符串对象不会在字符串池中。 - Ammar Samater