Booleano: isso não cria novas instâncias do booleano, portanto, o desempenho é melhor (e menos coleta de lixo). Reutiliza as duas instâncias de um Boolean.TRUEou de Boolean.FALSE.
booleano: nenhuma instância é necessária, você usa o tipo primitivo.
A autoboxing também pode ser usada, mas tem um custo de desempenho.
Sugiro usá-lo apenas quando você tiver que se lançar, não quando o elenco for evitável.
a atribuição de Boolean.valueOf a boolaen2 seria desmarcada automaticamente? Não estou vendo a diferença de analisar booleano aqui.
Alex Feinman
9
O maior problema é que o booleano não irá exceção quando vir algo que não deve aceitar. Ele retornará true para qualquer coisa que veja como "true" e retornará false para todo o resto . Se você estiver tentando aplicar a correspondência de uma sequência com um valor booleano apropriado, precisará adicionar lógica extra para capturar casos ilegais manualmente.
precisa saber é o seguinte
e se eu usar #boolean boolean2 = Boolean.valueOf("true");
21813 vipin8169
1
se o objeto String for nulo, o Boolean.valueOf (String) retornará false. Mas o Boolean também pode conter um valor nulo. Você pode fornecer qualquer ajuda para isso.
Amit kate
90
Você precisa ter cuidado ao usar Boolean.valueOf (string) ou Boolean.parseBoolean (string) . A razão para isso é que os métodos sempre retornarão false se a String não for igual a "true" (o caso é ignorado).
Por exemplo:
Boolean.valueOf("YES")->false
Devido a esse comportamento, eu recomendaria adicionar algum mecanismo para garantir que a string que deveria ser convertida em um booleano siga um formato especificado.
Por exemplo:
if(string.equalsIgnoreCase("true")|| string.equalsIgnoreCase("false")){Boolean.valueOf(string)// do something }else{// throw some exception}
Este é o melhor exemplo que eu já vi e o que deveria ter sido implementado no tipo booleano para começar. Lançar uma exceção para um valor booleano inválido é importante para muitos aplicativos.
precisa saber é o seguinte
2
Não, isso não é totalmente verdade. aqui está a implementação subjacente do parseBoolean público estático booleano parseBoolean (String s) {return ((s! = null) && s.equalsIgnoreCase ("true")); }
electricalbah
Heh ... Se você precisar escrever esse código, não precisará chamar Boolean.valueOf. Em vez disso você pode reestruturar simples esta declaração se por isso vai fazer o que quiser ;-)
22
Boolean b =Boolean.valueOf(string);
O valor de bé verdadeiro se a sequência não for nula e igual a true(ignorando maiúsculas e minúsculas).
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.");}
Para obter o valor booleano de uma String, tente o seguinte:
publicboolean toBoolean(String s){try{returnBoolean.parseBoolean(s);// Successfully converted String to boolean}catch(Exception e){returnnull;// There was some error, so return null.}}
Criamos a biblioteca soyuz-to para simplificar esse problema (converter X em Y). É apenas um conjunto de respostas SO para perguntas semelhantes. Pode ser estranho usar a biblioteca para um problema tão simples, mas realmente ajuda em muitos casos semelhantes.
Analisa o argumento da string como um booleano. O valor booleano retornado representa o valor true se o argumento da string não nullfor e for igual, ignorando maiúsculas e minúsculas, à string " true".
Parâmetros:
s - a String que contém a representação booleana a ser analisada
Retorna: o booleano representado pelo argumento string
Embora o texto da pergunta não seja explícito, esta é uma pergunta sobre Java. Pelo menos está marcado dessa maneira. Esta resposta pode confundir as pessoas.
Paulo.albuquerque
-3
você pode definir diretamente o valor booleano equivalente a qualquer string pela classe System e acessá-lo em qualquer lugar.
Respostas:
Tente (dependendo do tipo de resultado desejado):
Vantagem:
Boolean.TRUE
ou deBoolean.FALSE
.A documentação oficial está no Javadoc .
ATUALIZADA:
A autoboxing também pode ser usada, mas tem um custo de desempenho.
Sugiro usá-lo apenas quando você tiver que se lançar, não quando o elenco for evitável.
fonte
boolean boolean2 = Boolean.valueOf("true");
Você precisa ter cuidado ao usar Boolean.valueOf (string) ou Boolean.parseBoolean (string) . A razão para isso é que os métodos sempre retornarão false se a String não for igual a "true" (o caso é ignorado).
Por exemplo:
Devido a esse comportamento, eu recomendaria adicionar algum mecanismo para garantir que a string que deveria ser convertida em um booleano siga um formato especificado.
Por exemplo:
fonte
O valor de
b
é verdadeiro se a sequência não for nula e igual atrue
(ignorando maiúsculas e minúsculas).fonte
Além da excelente resposta do KLE, também podemos tornar algo mais flexível:
(inspirado na resposta de zlajo ... :-))
fonte
fonte
Bem, como agora em janeiro de 2018, a melhor maneira disso é usar o apache
BooleanUtils.toBoolean
.Isso converterá qualquer string booleana como em booleana, por exemplo, Y, sim, verdadeiro, N, não, falso, etc.
Realmente útil!
fonte
Minha maneira de converter string para booleano.
fonte
Resultado:
fonte
Foi assim que eu fiz:
"1##true".contains( string )
Para o meu caso é principalmente 1 ou verdadeiro. Eu uso hashes como divisores.
fonte
Para obter o valor booleano de uma String, tente o seguinte:
Se houver um erro, ele retornará nulo. Exemplo:
fonte
parseBoolean(String s)
não lança uma exceção, de acordo com o Javadoc.Por que não usar uma expressão regular?
fonte
Criamos a biblioteca soyuz-to para simplificar esse problema (converter X em Y). É apenas um conjunto de respostas SO para perguntas semelhantes. Pode ser estranho usar a biblioteca para um problema tão simples, mas realmente ajuda em muitos casos semelhantes.
Verifique - é muito simples e tem muitos outros recursos úteis
fonte
Visite http://msdn.microsoft.com/en-us/library/system.boolean.parse.aspx
Isso lhe dará uma idéia do que fazer.
É isso que recebo da documentação Java :
fonte
você pode definir diretamente o valor booleano equivalente a qualquer string pela classe System e acessá-lo em qualquer lugar.
fonte