Ich habe ein char-Array:
char[] a = {'h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd'};
Meine aktuelle Lösung ist zu tun
String b = new String(a);
Aber gibt es doch einen besseren Weg, dies zu tun?
Ich habe ein char-Array:
char[] a = {'h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd'};
Meine aktuelle Lösung ist zu tun
String b = new String(a);
Aber gibt es doch einen besseren Weg, dies zu tun?
Antworten:
Nein, diese Lösung ist absolut korrekt und sehr minimal.
Beachten Sie jedoch, dass dies eine sehr ungewöhnliche Situation ist: Da String
speziell in Java gehandhabt wird, ist sogar "foo"
tatsächlich eineString
. Daher char
ist es im normalen Code nicht erforderlich , einen String in einzelne s aufzuteilen und wieder zusammenzufügen.
Vergleichen Sie dies mit C / C ++, wo "foo"
Sie ein Bündel von char
s haben, das auf der einen und string
der anderen Seite durch ein Null-Byte abgeschlossen ist, und viele Konvertierungen zwischen ihnen aufgrund älterer Methoden.
String text = String.copyValueOf(data);
oder
String text = String.valueOf(data);
ist wohl besser (kapselt den new String
Anruf).
String(char[])
oder eine Variante davon auf. Und der Kopierteil ist innen erledigt String(char[])
. Dies lässt neben der Symmetrie mit den anderen valueOf
Methoden keinen Vorteil für einen direkten Aufruf .
String
inkompatibel geändert und / oder erweitert wird oder mehrere konkurrierende Implementierungen zur Laufzeit ausgewählt werden können, ist eine statische Factory-Methode sinnvoll. Dies wird bei so niedrigen Levels wie nicht passieren String
. Daher gehe ich davon aus: Verwenden Sie den kleinsten geeigneten Hammer, nicht den größten verfügbaren.
CharSequence
Benutzeroberfläche erstellen mussten, zeigt, wie fehlerhaft Ihr "nicht mit Low-Level-Sachen wie String" passiert - sie ändern nicht, was in String passiert, weil sie sich früh daran gebunden haben, und jetzt wünschen sie es das hätten sie nicht.
String str = "wwwwww3333dfevvv";
char[] c = str.toCharArray();
Um das Zeichenarray in einen String umzuwandeln, gibt es zwei Möglichkeiten.
Arrays.toString(c);
Gibt die Zeichenfolge zurück [w, w, w, w, w, w, 3, 3, 3, 3, d, f, e, v, v, v]
.
Und:
String.valueOf(c)
Gibt die Zeichenfolge zurück wwwwww3333dfevvv
.
Zusammenfassend : Achten Sie darauf Arrays.toString(c)
, denn Sie erhalten "[w, w, w, w, w, w, 3, 3, 3, 3, d, f, e, v, v, v]"
statt "wwwwww3333dfevvv"
.
Ein String in Java ist lediglich ein Objekt um ein Array von Zeichen. Daher a
char[]
ist identisch mit einem String ohne Box mit denselben Zeichen. Durch Erstellen eines neuen Strings aus Ihrem Zeichenfeld
new String(char[])
Sie weisen den Compiler im Wesentlichen an, ein String-Objekt um Ihr Zeichenarray herum automatisch zu boxen.
Sie können String.valueOf
Methode verwenden.
Zum Beispiel,
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);
Weitere Informationen zu char array to string finden Sie unter den folgenden Links
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
Konvertieren eines bestimmten Array-Typs in einen String mithilfe der Java 8 Stream-Funktion
String stringValue =
Arrays.stream(new char[][]{a}).map(String::valueOf).collect(Collectors.joining());
Versuche dies
Arrays.toString(array)
Verwenden Sie einfach String.value wie unten;
private static void h() {
String helloWorld = "helloWorld";
System.out.println(helloWorld);
char [] charArr = helloWorld.toCharArray();
System.out.println(String.valueOf(charArr));
}
Sie können auch die StringBuilder-Klasse verwenden
String b = new StringBuilder(a).toString();
Die Verwendung von String oder StringBuilder hängt von Ihren Methodenanforderungen ab.
Ein alternativer Weg ist:
String b = a + "";
toString
ordnungsgemäß funktioniert char[]
. Es funktioniert möglicherweise bei bestimmten Anbietern und Versionen der JVM.
a
und Erstellung eines anderen String-Objekts, das mit a.toString()
und""