O título basicamente diz tudo. Normalmente, estou testando isso ao lado de a string == null
, então não estou realmente preocupado com um teste com segurança nula. Qual devo usar?
String s = /* whatever */;
...
if (s == null || "".equals(s))
{
// handle some edge case here
}
ou
if (s == null || s.isEmpty())
{
// handle some edge case here
}
Na mesma nota - faz isEmpty()
mesmo outra coisa senão return this.equals("");
ou return this.length() == 0;
?
isEmpty()
é apenas Java 6+.Respostas:
O principal benefício
"".equals(s)
é que você não precisa da verificação nula (equals
irá verificar seu argumento e retornarfalse
se for nulo), com o qual você parece não se importar. Se você não está preocupado ems
ser nulo (ou está verificando isso), eu definitivamente usarias.isEmpty()
; mostra exatamente o que você está verificando, você se importa ses
está vazio ou não , se não é igual à string vaziafonte
getValue()
voltou nulo, você teria um NullPointerException quandotoString()
foi chamados
for nulo, você não pode chamar métodos nele - é nulo.""
nunca será nula, então você pode chamar métodos nele com segurança, eequals()
pode lidar com o caso em que o seu argumento é nuloisEmpty()
verifica o comprimento interno de uma matriz privada eequals(Object anObject)
faz muito mais (por exemplo, verificaçãoinstanceof
). Em termos de desempenho,isEmpty()
geralmente é mais rápido.String.equals("")
é realmente um pouco mais lento do que apenas umaisEmpty()
chamada. Strings armazenam uma variável de contagem inicializada no construtor, pois Strings são imutáveis.isEmpty()
compara a variável count a 0, enquanto igual verifica o tipo, o comprimento da string e, em seguida, itera sobre a string para comparação, se os tamanhos corresponderem.Então, para responder sua pergunta,
isEmpty()
realmente fará muito menos! e isso é uma coisa boa.fonte
Uma coisa que você pode considerar além das outras questões mencionadas é a
isEmpty()
introduzida na 1.6, portanto, se você a usar, não poderá executar o código no Java 1.5 ou abaixo.fonte
Você pode usar o apache commons StringUtils isEmpty () ou isNotEmpty ().
fonte
Realmente não importa.
"".equals(str)
é mais claro na minha opinião.isEmpty()
retornoscount == 0
;fonte
str.isEmpty()
é muito mais claro que"".equals(str)
. Lê como o que você está verificando. Questão de opinião, eu acho.Eu escrevi uma classe de testador que pode testar o desempenho:
Descobri que o uso de .isEmpty () levava cerca de metade do tempo de .equals ("").
fonte