945 Stimmen

Wie konvertiert man ein Zeichen in einen String?

Ich habe eine char und ich brauche eine String . Wie konvertiere ich von der einen in die andere Sprache?

19voto

Dmitriy Dumanskiy Punkte 10768

Wie @WarFox sagte - es gibt 6 Methoden, um char in string zu konvertieren. Die schnellste Methode ist jedoch die Verkettung, auch wenn die Antworten oben besagen, dass es sich um String.valueOf . Hier ist ein Benchmark, der das beweist:

@BenchmarkMode(Mode.Throughput)
@Fork(1)
@State(Scope.Thread)
@Warmup(iterations = 10, time = 1, batchSize = 1000, timeUnit = TimeUnit.SECONDS)
@Measurement(iterations = 10, time = 1, batchSize = 1000, timeUnit = TimeUnit.SECONDS)
public class CharToStringConversion {

    private char c = 'c';

    @Benchmark
    public String stringValueOf() {
        return String.valueOf(c);
    }

    @Benchmark
    public String stringValueOfCharArray() {
        return String.valueOf(new char[]{c});
    }

    @Benchmark
    public String characterToString() {
        return Character.toString(c);
    }

    @Benchmark
    public String characterObjectToString() {
        return new Character(c).toString();
    }

    @Benchmark
    public String concatBlankStringPre() {
        return c + "";
    }

    @Benchmark
    public String concatBlankStringPost() {
        return "" + c;
    }

    @Benchmark
    public String fromCharArray() {
        return new String(new char[]{c});
    }
}

Und Ergebnis:

Benchmark                                        Mode  Cnt       Score      Error  Units
CharToStringConversion.characterObjectToString  thrpt   10   82132.021 ± 6841.497  ops/s
CharToStringConversion.characterToString        thrpt   10  118232.069 ± 8242.847  ops/s
CharToStringConversion.concatBlankStringPost    thrpt   10  136960.733 ± 9779.938  ops/s
CharToStringConversion.concatBlankStringPre     thrpt   10  137244.446 ± 9113.373  ops/s
CharToStringConversion.fromCharArray            thrpt   10   85464.842 ± 3127.211  ops/s
CharToStringConversion.stringValueOf            thrpt   10  119281.976 ± 7053.832  ops/s
CharToStringConversion.stringValueOfCharArray   thrpt   10   86563.837 ± 6436.527  ops/s

Wie Sie sehen können, wäre die schnellste Variante c + "" o "" + c ;

VM version: JDK 1.8.0_131, VM 25.131-b11

Dieser Leistungsunterschied ist zurückzuführen auf -XX:+OptimizeStringConcat Optimierung. Sie können darüber lesen aquí .

18voto

Óscar López Punkte 224631

Versuchen Sie dies: Character.toString(aChar) oder nur dies: aChar + ""

5voto

akhil_mittal Punkte 20953

Wir haben verschiedene Möglichkeiten, eine char a String . Eine ist die Verwendung der statischen Methode toString() sur Character Klasse:

char ch = 'I'; 
String str1 = Character.toString(ch);

Eigentlich ist das toString Methode macht intern Gebrauch von valueOf Methode von String Klasse, die ein char-Array verwendet:

public static String toString(char c) {
    return String.valueOf(c);
}

Así que zweite ist es, diese direkt zu verwenden:

String str2 = String.valueOf(ch);

Este valueOf Methode in String Klasse verwendet ein char-Array:

public static String valueOf(char c) {
        char data[] = {c};
        return new String(data, true);
}

Also die dritte ist die Verwendung eines anonymen Arrays, um ein einzelnes Zeichen zu verpacken und es dann an String Konstrukteur:

String str4 = new String(new char[]{ch});

El vierte kann man die Verkettung nutzen:

String str3 = "" + ch;

Dies macht Gebrauch von append Methode von StringBuilder Klasse, was bei der Verkettung in einer Schleife eigentlich vorzuziehen ist.

4voto

hyper-neutrino Punkte 5001

Hier sind einige Methoden, in keiner bestimmten Reihenfolge:

char c = 'c';

String s = Character.toString(c); // Most efficient way

s = new Character(c).toString(); // Same as above except new Character objects needs to be garbage-collected

s = c + ""; // Least efficient and most memory-inefficient, but common amongst beginners because of its simplicity

s = String.valueOf(c); // Also quite common

s = String.format("%c", c); // Not common

Formatter formatter = new Formatter();
s = formatter.format("%c", c).toString(); // Same as above
formatter.close();

2voto

Shivanandam Punkte 1684

Ich konvertiere Char Array in String

Char[] CharArray={ 'A', 'B', 'C'};
String text = String.copyValueOf(CharArray);

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X