Ich habe eine char
und ich brauche eine String
. Wie konvertiere ich von der einen in die andere Sprache?
Antworten
Zu viele Anzeigen?Sie können verwenden Character.toString(char)
. Beachten Sie, dass diese Methode einfach einen Aufruf an String.valueOf(char)
was auch funktioniert.
Wie bereits erwähnt, funktioniert die Verkettung von Zeichenfolgen auch als Abkürzung:
String s = "" + 's';
Aber das läuft darauf hinaus:
String s = new StringBuilder().append("").append('s').toString();
was weniger effizient ist, weil die StringBuilder
wird unterstützt durch eine char[]
(überzuteilt durch StringBuilder()
a 16
), nur damit dieses Array defensiv durch das resultierende String
.
String.valueOf(char)
"durch die Hintertür", indem sie die char
in ein Einzelelement-Array und übergibt es an den privaten Konstruktor des Pakets String(char[], boolean)
, wodurch das Kopieren des Arrays vermieden wird.
Ich habe die folgenden fünf sechs Methoden, um dies zu tun.
// Method #1
String stringValueOf = String.valueOf('c'); // most efficient
// Method #2
String stringValueOfCharArray = String.valueOf(new char[]{x});
// Method #3
String characterToString = Character.toString('c');
// Method #4
String characterObjectToString = new Character('c').toString();
// Method #5
// Although this approach seems very simple,
// this is less efficient because the concatenation
// expands to a StringBuilder.
String concatBlankString = 'c' + "";
// Method #6
String fromCharArray = new String(new char[]{x});
Anmerkung: Zeichen.toString(char) gibt zurück. String.valueOf(char) . Beide sind also praktisch gleich.
String.valueOf(char[] value)
ruft auf. new String(char[] value)
die wiederum die value
Char-Array.
public String(char value[]) {
this.value = Arrays.copyOf(value, value.length);
}
Andererseits String.valueOf(char value)
ruft folgendes auf package private constructor.
String(char[] value, boolean share) {
// assert share : "unshared not supported";
this.value = value;
}
Quellcode von String.java
sur Java 8-Quellcode
Daher
String.valueOf(char)
scheint die effizienteste Methode zu sein, sowohl in Bezug auf den Speicherplatz als auch auf die Geschwindigkeit, um diechar
aString
.
Quellen:
Nachfolgend finden Sie verschiedene Möglichkeiten zur Konvertierung von char c in String s (in abnehmender Reihenfolge der Geschwindigkeit und Effizienz)
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
- See previous answers
- Weitere Antworten anzeigen