Boolean: Dadurch werden keine neuen Instanzen von Boolean erstellt, sodass die Leistung besser ist (und weniger Speicherbereinigung erfolgt). Die beiden Instanzen von entweder Boolean.TRUEoder werden wiederverwendet Boolean.FALSE.
Boolescher Wert: Es wird keine Instanz benötigt. Sie verwenden den primitiven Typ.
Die offizielle Dokumentation befindet sich im Javadoc .
AKTUALISIERT:
Autoboxing könnte auch verwendet werden, hat aber Leistungskosten.
Ich schlage vor, es nur zu verwenden, wenn Sie sich selbst besetzen müssten, nicht, wenn die Besetzung vermeidbar ist.
Würde die Zuweisung von Boolean.valueOf zu boolaen2 nicht trotzdem automatisch entpackt werden? Ich sehe hier keinen Unterschied zu parseBoolean.
Alex Feinman
9
Das größte Problem ist, dass Boolean keine Ausnahme macht, wenn es etwas sieht, das es nicht akzeptieren sollte. Es wird für alles, was es als "wahr" ansieht, als wahr und für alles andere als falsch zurückgegeben . Wenn Sie versuchen, das Abgleichen einer Zeichenfolge mit einem geeigneten booleschen Wert zu erzwingen, müssen Sie zusätzliche Logik hinzufügen, um illegale Fälle manuell abzufangen.
Brandon Belvin
Was ist, wenn ich benutzeboolean boolean2 = Boolean.valueOf("true");
Vipin8169
1
Wenn das String-Objekt null ist, gibt Boolean.valueOf (String) false zurück. Boolean kann jedoch auch den Wert null enthalten. Können Sie hierfür eine Hilfe bereitstellen?
Amit Kate
90
Sie müssen vorsichtig sein, wenn Sie Boolean.valueOf (Zeichenfolge) oder Boolean.parseBoolean (Zeichenfolge) verwenden . 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, um sicherzustellen, dass die Zeichenfolge, 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}
Dies ist das beste Beispiel, das ich gesehen habe, und was hätte im Booleschen Typ implementiert werden sollen. Das Auslösen einer Ausnahme für einen ungültigen Booleschen Wert ist für viele Anwendungen wichtig.
Brandon Belvin
2
Nein, das ist nicht ganz richtig. Hier ist die zugrunde liegende Implementierung von parseBoolean public static boolean parseBoolean (String s) {return ((s! = null) && s.equalsIgnoreCase ("true")); }
electricbah
Heh ... Wenn Sie solchen Code schreiben müssen, müssen Sie Boolean.valueOf nicht aufrufen. Stattdessen können Sie diese if-Anweisung einfach umstrukturieren, damit sie das tut, was Sie wollen ;-)
22
Boolean b =Boolean.valueOf(string);
Der Wert von bist true, wenn die Zeichenfolge nicht null und gleich ist true(Groß- und Kleinschreibung ignorieren).
publicstaticboolean stringToBool(String s){
s = s.toLowerCase();Set<String> trueSet =newHashSet<String>(Arrays.asList("1","true","yes"));Set<String> falseSet =newHashSet<String>(Arrays.asList("0","false","no"));if(trueSet.contains(s))returntrue;if(falseSet.contains(s))returnfalse;thrownewIllegalArgumentException(s +" is not a boolean.");}
Meine Art, einen String in einen Booleschen Wert umzuwandeln.
Versuchen Sie Folgendes, um den booleschen Wert eines Strings zu erhalten:
publicboolean toBoolean(String s){try{returnBoolean.parseBoolean(s);// Successfully converted String to boolean}catch(Exception e){returnnull;// There was some error, so return null.}}
Wenn ein Fehler auftritt, wird null zurückgegeben. Beispiel:
Wir haben Sojuz-to erstellt Bibliothek erstellt, um dieses Problem zu vereinfachen (X in Y konvertieren). Es ist nur eine Reihe von SO-Antworten auf ähnliche Fragen. Es mag seltsam sein, die Bibliothek für ein so einfaches Problem zu verwenden, aber es hilft in vielen ähnlichen Fällen wirklich.
Analysiert das String-Argument als Booleschen Wert. Der zurückgegebene Boolesche Wert stellt den Wert true dar, wenn das Zeichenfolgenargument nicht nullund ohne Berücksichtigung der Groß- und Kleinschreibung der Zeichenfolge " true" entspricht.
Parameter:
s - Der String, der die zu analysierende boolesche Darstellung enthält
Rückgabe: Der durch das Zeichenfolgenargument dargestellte Boolesche Wert
Obwohl der Text der Frage nicht explizit ist, handelt es sich um eine Frage zu Java. Zumindest ist es so markiert. Diese Antwort kann Menschen verwirren.
Paulo.albuquerque
-3
Sie können den booleschen Wert, der einer beliebigen Zeichenfolge nach Systemklasse entspricht, direkt festlegen und überall darauf zugreifen.
Antworten:
Versuchen Sie es (je nachdem, welchen Ergebnistyp Sie möchten):
Vorteil:
Boolean.TRUE
oder werden wiederverwendetBoolean.FALSE
.Die offizielle Dokumentation befindet sich im Javadoc .
AKTUALISIERT:
Autoboxing könnte auch verwendet werden, hat aber Leistungskosten.
Ich schlage vor, es nur zu verwenden, wenn Sie sich selbst besetzen müssten, nicht, wenn die Besetzung vermeidbar ist.
quelle
boolean boolean2 = Boolean.valueOf("true");
Sie müssen vorsichtig sein, wenn Sie Boolean.valueOf (Zeichenfolge) oder Boolean.parseBoolean (Zeichenfolge) verwenden . 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:
Aufgrund dieses Verhaltens würde ich empfehlen, einen Mechanismus hinzuzufügen, um sicherzustellen, dass die Zeichenfolge, die in einen Booleschen Wert übersetzt werden soll, einem bestimmten Format folgt.
Zum Beispiel:
quelle
Der Wert von
b
ist true, wenn die Zeichenfolge nicht null und gleich isttrue
(Groß- und Kleinschreibung ignorieren).quelle
Neben der hervorragenden Antwort von KLE können wir auch etwas flexibler machen:
(inspiriert von Zlajos Antwort ... :-))
quelle
quelle
Nun, wie jetzt im Januar 2018, ist der beste Weg, Apache zu verwenden
BooleanUtils.toBoolean
.Dadurch werden alle booleschen Zeichenfolgen in boolesche Werte konvertiert, z. B. Y, yes, true, N, no, false usw.
Wirklich praktisch!
quelle
Meine Art, einen String in einen Booleschen Wert umzuwandeln.
quelle
Ergebnis:
quelle
So habe ich es gemacht:
"1##true".contains( string )
Für meinen Fall ist meistens entweder 1 oder wahr. Ich benutze Hashes als Teiler.
quelle
Versuchen Sie Folgendes, um den booleschen Wert eines Strings zu erhalten:
Wenn ein Fehler auftritt, wird null zurückgegeben. Beispiel:
quelle
parseBoolean(String s)
wirft laut Javadoc keine Ausnahme.Warum nicht einen regulären Ausdruck verwenden?
quelle
Wir haben Sojuz-to erstellt Bibliothek erstellt, um dieses Problem zu vereinfachen (X in Y konvertieren). Es ist nur eine Reihe von SO-Antworten auf ähnliche Fragen. Es mag seltsam sein, die Bibliothek für ein so einfaches Problem zu verwenden, aber es hilft in vielen ähnlichen Fällen wirklich.
Bitte überprüfen Sie es - es ist sehr einfach und hat viele andere nützliche Funktionen
quelle
Besuchen Sie http://msdn.microsoft.com/en-us/library/system.boolean.parse.aspx
Dies gibt Ihnen eine Vorstellung davon, was zu tun ist.
Folgendes erhalte ich aus der Java-Dokumentation :
quelle
Sie können den booleschen Wert, der einer beliebigen Zeichenfolge nach Systemklasse entspricht, direkt festlegen und überall darauf zugreifen.
quelle