367 Stimmen

Wie konvertiert man ein String-Objekt in ein Boolesches Objekt?

Wie man konvertiert String Objekt zu Boolean Objekt?

586voto

KLE Punkte 22895

Versuchen Sie es (je nachdem, welche Art von Ergebnis Sie wünschen):

Boolean boolean1 = Boolean.valueOf("true");
boolean boolean2 = Boolean.parseBoolean("true");

Vorteil:

  • Boolean: Es werden keine neuen Instanzen von Boolean erstellt, so dass die Leistung besser ist (und weniger Müll gesammelt wird). Es verwendet die beiden Instanzen von entweder Boolean.TRUE o Boolean.FALSE .
  • boolean: Es wird keine Instanz benötigt, man verwendet den primitiven Typ.

Die offizielle Dokumentation befindet sich in der Javadoc .


AKTUALISIERT:

Autoboxing könnte auch verwendet werden, aber es kostet Leistung.
Ich schlage vor, sie nur dann zu verwenden, wenn Sie sich selbst werfen müssten, nicht wenn der Wurf vermeidbar ist.

105voto

zlajo Punkte 2113

Sie müssen vorsichtig sein, wenn Sie Boolean.valueOf(string) o Boolean.parseBoolean(string) . Der Grund dafür ist, dass die Methoden immer false zurückgeben, wenn der String nicht gleich "true" ist (der Fall wird ignoriert).

Zum Beispiel:

Boolean.valueOf("YES") -> false

Aufgrund dieses Verhaltens würde ich empfehlen, einen Mechanismus hinzuzufügen, der sicherstellt, dass die Zeichenkette, die in einen Booleschen Wert übersetzt werden soll, einem bestimmten Format folgt.

Zum Beispiel:

if (string.equalsIgnoreCase("true") || string.equalsIgnoreCase("false")) {
    Boolean.valueOf(string)
    // do something   
} else {
    // throw some exception
}

23voto

CJS Punkte 1405
Boolean b = Boolean.valueOf(string);

Der Wert von b ist wahr, wenn die Zeichenkette nicht Null ist und den Wert true (Fall ignorieren).

20voto

PhiLho Punkte 39496

Neben der hervorragenden Antwort von KLE können wir auch etwas flexibler vorgehen:

boolean b = string.equalsIgnoreCase("true") || string.equalsIgnoreCase("t") || 
        string.equalsIgnoreCase("yes") || string.equalsIgnoreCase("y") || 
        string.equalsIgnoreCase("sure") || string.equalsIgnoreCase("aye") || 
        string.equalsIgnoreCase("oui") || string.equalsIgnoreCase("vrai");

(inspiriert durch die Antwort von zlajo... :-))

11voto

david30xie Punkte 896

Nun, wie jetzt im Januar 2018, ist der beste Weg dafür die Verwendung von Apache's BooleanUtils.toBoolean .

Dies wandelt eine beliebige boolesche Zeichenkette in einen booleschen Wert um, z. B. Y, yes, true, N, no, false, usw.

Wirklich praktisch!

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