Boolean: nie tworzy to nowych instancji Boolean, więc wydajność jest lepsza (i mniej wyrzucania elementów bezużytecznych). Ponownie wykorzystuje dwa wystąpienia jednego Boolean.TRUElub Boolean.FALSE.
boolean: nie jest wymagana żadna instancja, używasz typu pierwotnego.
Można również użyć automatycznego porównywania, ale wiąże się to z obniżeniem wydajności.
Sugeruję, aby używać go tylko wtedy, gdy będziesz musiał rzucić się, a nie wtedy, gdy można tego uniknąć.
czy i tak nie przypisałoby Boolean.valueOf do boolaen2? Nie widzę tutaj różnicy w porównaniu z parseBoolean.
Alex Feinman,
9
Największym problemem jest to, że Boolean nie będzie wyjątek, gdy zobaczy coś, czego nie powinien zaakceptować. Zwróci prawdę dla wszystkiego, co uważa za „prawdę”, i zwróci fałsz dla wszystkiego innego . Jeśli próbujesz wymusić dopasowanie ciągu do odpowiedniej wartości logicznej, musisz dodać dodatkową logikę, aby ręcznie wychwytywać nielegalne przypadki.
Brandon Belvin,
co jeśli boolean boolean2 = Boolean.valueOf("true");
użyję
1
jeśli obiekt String ma wartość NULL, to Boolean.valueOf (String) zwróci wartość false. Ale Boolean może również przechowywać wartość NULL. czy możesz w tym pomóc.
amit kate,
90
Należy zachować ostrożność podczas korzystania z Boolean.valueOf (ciąg) lub Boolean.parseBoolean (ciąg) . Powodem tego jest to, że metody zawsze zwracają wartość false, jeśli ciąg znaków nie jest równy „true” (wielkość liter jest ignorowana).
Na przykład:
Boolean.valueOf("YES")->false
Z powodu takiego zachowania zaleciłbym dodanie mechanizmu zapewniającego, że ciąg znaków, który powinien zostać przetłumaczony na wartość logiczną, ma określony format.
Na przykład:
if(string.equalsIgnoreCase("true")|| string.equalsIgnoreCase("false")){Boolean.valueOf(string)// do something }else{// throw some exception}
To najlepszy przykład, jaki widziałem i na początek powinien był zostać zaimplementowany w typie boolowskim. Zgłoszenie wyjątku z powodu niepoprawnej wartości logicznej jest ważne dla wielu aplikacji.
Brandon Belvin,
2
Nie, to nie do końca prawda. tutaj jest podstawowa implementacja publicznego statycznego boolean parseBoolean parseBoolean (String s) {return ((s! = null) && s.equalsIgnoreCase („true”)); }
electricbah
Heh ... Jeśli musisz napisać taki kod, nie musisz wywoływać Boolean.valueOf. Zamiast tego możesz po prostu zrestrukturyzować tę instrukcję if, aby
22
Boolean b =Boolean.valueOf(string);
Wartość b true, jeśli ciąg znaków nie jest pusty i równy true(ignorując liter).
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.");}
Mój sposób na konwersję łańcucha znaków na wartość logiczną.
Aby uzyskać wartość boolowską ciągu, spróbuj tego:
publicboolean toBoolean(String s){try{returnBoolean.parseBoolean(s);// Successfully converted String to boolean}catch(Exception e){returnnull;// There was some error, so return null.}}
Jeśli wystąpi błąd, zwróci wartość null. Przykład:
Stworzyliśmy bibliotekę Soyuz-To, aby uprościć ten problem (przekonwertuj X na Y). To tylko zestaw SO odpowiedzi na podobne pytania. Używanie biblioteki w przypadku tak prostego problemu może być dziwne, ale naprawdę pomaga w wielu podobnych przypadkach.
Analizuje argument ciągu jako wartość logiczną. Zwracana wartość logiczna reprezentuje wartość true, jeśli argument ciągu nie nulljest i jest równy, ignorując wielkość liter, ciągowi „ true”.
Parametry:
s - ciąg zawierający reprezentację logiczną, którą należy przeanalizować
Zwraca: wartość logiczna reprezentowana przez argument ciągu
Odpowiedzi:
Spróbuj (w zależności od rodzaju pożądanego wyniku):
Korzyść:
Boolean.TRUE
lubBoolean.FALSE
.Oficjalna dokumentacja znajduje się w Javadoc .
AKTUALIZACJA:
Można również użyć automatycznego porównywania, ale wiąże się to z obniżeniem wydajności.
Sugeruję, aby używać go tylko wtedy, gdy będziesz musiał rzucić się, a nie wtedy, gdy można tego uniknąć.
źródło
boolean boolean2 = Boolean.valueOf("true");
Należy zachować ostrożność podczas korzystania z Boolean.valueOf (ciąg) lub Boolean.parseBoolean (ciąg) . Powodem tego jest to, że metody zawsze zwracają wartość false, jeśli ciąg znaków nie jest równy „true” (wielkość liter jest ignorowana).
Na przykład:
Z powodu takiego zachowania zaleciłbym dodanie mechanizmu zapewniającego, że ciąg znaków, który powinien zostać przetłumaczony na wartość logiczną, ma określony format.
Na przykład:
źródło
Wartość
b
true, jeśli ciąg znaków nie jest pusty i równytrue
(ignorując liter).źródło
Oprócz doskonałej odpowiedzi KLE możemy również uczynić coś bardziej elastycznym:
(zainspirowany odpowiedzią zlajo ... :-))
źródło
źródło
Cóż, podobnie jak teraz w styczniu 2018 roku, najlepszym sposobem na to jest użycie apache
BooleanUtils.toBoolean
.Spowoduje to konwersję dowolnego ciągu typu logicznego na boolean, np. Y, tak, prawda, N, nie, fałsz itp.
Naprawdę przydatne!
źródło
Mój sposób na konwersję łańcucha znaków na wartość logiczną.
źródło
Wynik:
źródło
Oto jak to zrobiłem:
"1##true".contains( string )
W moim przypadku jest to albo 1 albo prawda. Używam skrótów jako dzielników.
źródło
Aby uzyskać wartość boolowską ciągu, spróbuj tego:
Jeśli wystąpi błąd, zwróci wartość null. Przykład:
źródło
parseBoolean(String s)
nie zgłasza wyjątku, zgodnie z Javadoc.Dlaczego nie użyć wyrażenia regularnego?
źródło
Stworzyliśmy bibliotekę Soyuz-To, aby uprościć ten problem (przekonwertuj X na Y). To tylko zestaw SO odpowiedzi na podobne pytania. Używanie biblioteki w przypadku tak prostego problemu może być dziwne, ale naprawdę pomaga w wielu podobnych przypadkach.
Sprawdź to - jest bardzo prosty i ma wiele innych przydatnych funkcji
źródło
Odwiedzić http://msdn.microsoft.com/en-us/library/system.boolean.parse.aspx
To da ci wyobrażenie o tym, co robić.
Oto, co otrzymuję z dokumentacji Java :
źródło
możesz bezpośrednio ustawić wartość logiczną równoważną dowolnemu ciągowi według klasy System i uzyskać do niego dostęp w dowolnym miejscu ..
źródło