Bir char dizi var:
char[] a = {'h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd'};
Şu anki çözümüm
String b = new String(a);
Ama elbette bunu yapmanın daha iyi bir yolu var mı?
Bir char dizi var:
char[] a = {'h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd'};
Şu anki çözümüm
String b = new String(a);
Ama elbette bunu yapmanın daha iyi bir yolu var mı?
Yanıtlar:
Hayır, bu çözüm kesinlikle doğru ve çok az.
Ancak, bunun çok sıra dışı bir durum olduğunu unutmayın: Çünkü StringJava'da özel olarak ele alındığında "foo", aslında bir String. Bu nedenle, bir String'i tek tek chars'ye bölüp tekrar birleştirmek normal kodda gerekli değildir.
Bunu , bir tarafta ve diğer tarafta sıfır baytla sonlandırılmış bir s "foo"demetiniz ve eski yöntemler nedeniyle aralarındaki birçok dönüşümün olduğu C / C ++ ile karşılaştırın .charstring
String text = String.copyValueOf(data);
veya
String text = String.valueOf(data);
tartışmasız daha iyidir ( new Stringçağrıyı kapsar).
String(char[])de bunun bir varyantını çağırır . Ve kopya kısmı içeride yapılır String(char[]). Bu, diğer valueOfyöntemlerle simetrinin yanı sıra doğrudan bir çağrıya hiçbir fayda sağlamaz .
Stringuyumsuz bir şekilde değiştirilmesi ve / veya geliştirilmesi şansı varsa veya çalışma zamanında birkaç rakip uygulama seçilebiliyorsa, statik bir fabrika yöntemi mantıklıdır. Bu, böyle düşük seviyeli bir şeyle olmayacak String. Bu yüzden benim öncülüm: Mevcut en büyük çekiç değil, uygun en küçük çekiç kullanın.
CharSequenceArayüzü oluşturmak zorunda olmaları gerçeği, "string gibi düşük seviyeli şeylerle olmayacak" nızın ne kadar kusurlu olduğunu gösterir - dizgide neler olduğunu değiştirmezler çünkü kendilerini erken bağlarlar ve şimdi isterler olmazdı.
String str = "wwwwww3333dfevvv";
char[] c = str.toCharArray();
Şimdi karakter dizisini String'e dönüştürmek için iki yol var.
Arrays.toString(c);
Dizeyi döndürür [w, w, w, w, w, w, 3, 3, 3, 3, d, f, e, v, v, v].
Ve:
String.valueOf(c)
Dizeyi döndürür wwwwww3333dfevvv.
Özetle : dikkat edin Arrays.toString(c), "[w, w, w, w, w, w, 3, 3, 3, 3, d, f, e, v, v, v]"bunun yerine alacaksınız "wwwwww3333dfevvv".
Java'daki bir String yalnızca karakter dizisi etrafındaki bir nesnedir. Dolayısıyla bir
char[]
, aynı karakterlere sahip kutulanmamış bir Dize ile aynıdır. Karakter dizinizden yeni bir String oluşturarak
new String(char[])
temel olarak derleyiciye bir dizi nesnesini karakter dizinizin etrafına otomatik olarak yerleştirmesini söylersiniz.
String.valueOfYöntemi kullanabilirsiniz .
Örneğin,
char[] a = {'h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd'};
String b = String.valueOf(a);
System.out.println("Char Array back to String is: " + b);
Karakter dizisinden dizeye daha fazlası için aşağıdaki bağlantılara başvurabilirsiniz
https://docs.oracle.com/javase/7/docs/api/java/lang/String.html
https://www.flowerbrackets.com/convert-char-array-to-string-java/
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]);
} }
}
}
//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
Herhangi bir Dizi türünü Java 8 Stream işlevini kullanarak String'e dönüştürme
String stringValue =
Arrays.stream(new char[][]{a}).map(String::valueOf).collect(Collectors.joining());
Bunu dene
Arrays.toString(array)
Sadece aşağıdaki gibi String.value kullanın;
private static void h() {
String helloWorld = "helloWorld";
System.out.println(helloWorld);
char [] charArr = helloWorld.toCharArray();
System.out.println(String.valueOf(charArr));
}
StringBuilder sınıfını da kullanabilirsiniz
String b = new StringBuilder(a).toString();
String veya StringBuilder kullanımı yöntem gereksinimlerinize göre değişir.
1 alternatif yol yapmaktır:
String b = a + "";
toStringdoğru çalıştığını varsayarsak bu yanlıştır char[]. JVM'nin bazı belirli satıcıları ve sürümleri üzerinde çalışabilir.
ave a.toString()ve""