Boolean: cela ne crée pas de nouvelles instances de Boolean, donc les performances sont meilleures (et moins de récupération de place). Il réutilise les deux instances de Boolean.TRUEou Boolean.FALSE.
booléen: aucune instance n'est nécessaire, vous utilisez le type primitif.
Autoboxing pourrait également être utilisé, mais il a un coût de performance.
Je suggère de ne l'utiliser que lorsque vous devez vous lancer, pas lorsque le plâtre est évitable.
l'affectation de Boolean.valueOf à boolaen2 ne serait-elle pas automatiquement décomposée de toute façon? Je ne vois pas la différence avec parseBoolean ici.
Alex Feinman
9
Le plus gros problème est que Boolean ne fera pas exception lorsqu'il verra quelque chose qu'il ne devrait pas accepter. Il retournera vrai pour tout ce qu'il considère comme "vrai" et retournera faux pour tout le reste . Si vous essayez d'appliquer la correspondance d'une chaîne à une valeur booléenne appropriée, vous devrez ajouter une logique supplémentaire pour intercepter manuellement les cas illégaux.
Brandon Belvin
et si j'utiliseboolean boolean2 = Boolean.valueOf("true");
vipin8169
1
si l'objet String est nul, alors Boolean.valueOf (String) renverra false. Mais Boolean peut contenir une valeur nulle également. pouvez-vous fournir de l'aide pour cela.
amit kate
90
Vous devez être prudent lorsque vous utilisez Boolean.valueOf (string) ou Boolean.parseBoolean (string) . La raison en est que les méthodes retourneront toujours false si la chaîne n'est pas égale à "true" (le cas est ignoré).
Par exemple:
Boolean.valueOf("YES")->false
En raison de ce comportement, je recommanderais d'ajouter un mécanisme pour garantir que la chaîne qui doit être traduite en booléen suit un format spécifié.
Par exemple:
if(string.equalsIgnoreCase("true")|| string.equalsIgnoreCase("false")){Boolean.valueOf(string)// do something }else{// throw some exception}
C'est le meilleur exemple que j'ai vu et ce qui aurait dû être implémenté dans le type booléen pour commencer. Le lancement d'une exception pour une valeur booléenne non valide est important pour de nombreuses applications.
Brandon Belvin
2
Non, ce n'est pas totalement vrai. voici l'implémentation sous-jacente de parseBoolean public statique booléen parseBoolean (String s) {return ((s! = null) && s.equalsIgnoreCase ("true")); }
electricbah
Heh ... Si vous devez écrire un tel code, vous n'avez pas besoin d'appeler Boolean.valueOf. Au lieu de cela, vous pouvez simplement restructurer cette instruction if pour qu'elle fasse ce que vous voulez ;-)
22
Boolean b =Boolean.valueOf(string);
La valeur de best vraie si la chaîne n'est pas nulle et égale à true(en ignorant la casse).
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.");}
Pour obtenir la valeur booléenne d'une chaîne, essayez ceci:
publicboolean toBoolean(String s){try{returnBoolean.parseBoolean(s);// Successfully converted String to boolean}catch(Exception e){returnnull;// There was some error, so return null.}}
Nous avons créé la bibliothèque soyuz-to pour simplifier ce problème (convertir X en Y). C'est juste un ensemble de réponses SO pour des questions similaires. Cela peut être étrange d'utiliser la bibliothèque pour un problème aussi simple, mais cela aide vraiment dans de nombreux cas similaires.
Analyse l'argument chaîne en tant que booléen. Le booléen renvoyé représente la valeur true si l'argument chaîne n'est pas nullet est égal, en ignorant la casse, à la chaîne "true ".
Paramètres:
s - la chaîne contenant la représentation booléenne à analyser
Retour: le booléen représenté par l'argument chaîne
Bien que le texte de la question ne soit pas explicite, il s'agit d'une question concernant Java. Au moins, c'est étiqueté de cette façon. Cette réponse peut dérouter les gens.
paulo.albuquerque
-3
vous pouvez directement définir une valeur booléenne équivalente à n'importe quelle chaîne par classe System et y accéder n'importe où.
Réponses:
Essayez (selon le type de résultat souhaité):
Avantage:
Boolean.TRUE
ouBoolean.FALSE
.La documentation officielle est dans le Javadoc .
ACTUALISÉ:
Autoboxing pourrait également être utilisé, mais il a un coût de performance.
Je suggère de ne l'utiliser que lorsque vous devez vous lancer, pas lorsque le plâtre est évitable.
la source
boolean boolean2 = Boolean.valueOf("true");
Vous devez être prudent lorsque vous utilisez Boolean.valueOf (string) ou Boolean.parseBoolean (string) . La raison en est que les méthodes retourneront toujours false si la chaîne n'est pas égale à "true" (le cas est ignoré).
Par exemple:
En raison de ce comportement, je recommanderais d'ajouter un mécanisme pour garantir que la chaîne qui doit être traduite en booléen suit un format spécifié.
Par exemple:
la source
La valeur de
b
est vraie si la chaîne n'est pas nulle et égale àtrue
(en ignorant la casse).la source
Outre l'excellente réponse de KLE, nous pouvons également rendre quelque chose de plus flexible:
(inspiré par la réponse de zlajo ... :-))
la source
la source
Eh bien, comme maintenant en janvier 2018, le meilleur moyen est d'utiliser Apache's
BooleanUtils.toBoolean
.Cela convertira n'importe quelle chaîne de type booléen en booléen, par exemple Y, oui, vrai, N, non, faux, etc.
Vraiment pratique!
la source
Ma façon de convertir une chaîne en booléen.
la source
Résultat:
la source
Voici comment je l'ai fait:
"1##true".contains( string )
Pour mon cas, c'est généralement 1 ou vrai. J'utilise des hachages comme séparateurs.
la source
Pour obtenir la valeur booléenne d'une chaîne, essayez ceci:
S'il y a une erreur, elle renverra null. Exemple:
la source
parseBoolean(String s)
ne jette pas d'exception, selon le Javadoc.Pourquoi ne pas utiliser une expression régulière?
la source
Nous avons créé la bibliothèque soyuz-to pour simplifier ce problème (convertir X en Y). C'est juste un ensemble de réponses SO pour des questions similaires. Cela peut être étrange d'utiliser la bibliothèque pour un problème aussi simple, mais cela aide vraiment dans de nombreux cas similaires.
Veuillez le vérifier - c'est très simple et a beaucoup d'autres fonctionnalités utiles
la source
Visite http://msdn.microsoft.com/en-us/library/system.boolean.parse.aspx
Cela vous donnera une idée de quoi faire.
Voici ce que j'obtiens de la documentation Java :
la source
vous pouvez directement définir une valeur booléenne équivalente à n'importe quelle chaîne par classe System et y accéder n'importe où.
la source