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ü String
Java'da özel olarak ele alındığında "foo"
, aslında bir String
. Bu nedenle, bir String'i tek tek char
s'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 .char
string
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 valueOf
yöntemlerle simetrinin yanı sıra doğrudan bir çağrıya hiçbir fayda sağlamaz .
String
uyumsuz 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.
CharSequence
Arayü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.valueOf
Yö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 + "";
toString
doğru çalıştığını varsayarsak bu yanlıştır char[]
. JVM'nin bazı belirli satıcıları ve sürümleri üzerinde çalışabilir.
a
ve a.toString()
ve""