Fala galera…
ai vai uma duvidazinha q apareceu aqui…
posso comparar uma String com NULL desse jeito??
minhaString == null;
ou devo usar:
minhaString.equals("");
falow
Fala galera…
ai vai uma duvidazinha q apareceu aqui…
posso comparar uma String com NULL desse jeito??
minhaString == null;
ou devo usar:
minhaString.equals("");
falow
Eu tambem tenho essa dúvida!
Afinal, qual a diferença entre as duas comparacões?
:?:
vc só pode usar == pois se vc usar equals vai compilar mas vai dar um erro em tempo de execução.
Quando vc atribui null a um objeto ele não faz referencia para nenhum lugar na memoria. e o equals ele é uma comparação profunda. por isso quando vc executa vai gerar a exeption nullpointer.
espero ter ajudado.
A diferença é que o “==” compara referencias de objectos e o metodo .equals(String s) compara os conteudos das strings. Vejam o código abaixo:
[code]import java.io.*;
public class StringCompare {
public static void main(String[] args) {
String s = null;
System.out.println("Whatever" == new String("Whatever")); // false
System.out.println("Whatever".equals(new String("Whatever"))); // true
System.out.println(s == s); // true
System.out.println(s == null); // true
s = new String();
System.out.println(s == null); // false
System.out.println("".equals("")); // true
}
}[/code]
Por isso voçê usa um ou o outro dependendo se quer comparar conteúdos ou referencias 8)
PEACE!
Depende do seu objetivo!
Se você quer descobrir se a variável aponta para algum objeto, pode utilizar ==.
Agora, olhe o código abaixo:
String a = "a";
String b = "a";
String c = new String("a");
(a == b) // true
(b == c) // FALSE
a.equals(c) // true
A JVM possui um repositório de Strings, onde são armazenadas as Strings criadas com a declaração acima (a e b). Quando declaramos a String a e atribuimos o valor “a”, a JVM cria uma String com o valor “a” neste repositório, no entanto, ao criar a String b e associar o valor “a”, a JVM não irá criar uma nova String, mas sim utilizar MESMA string no repositorio… ou seja, o teste (a == b) não resulta em true porque as strings são iguais, mas porque as variáveis apontam para a mesma String!
Por isos que, ao utilizar explicitamente o operador new… um novo objeto com o valor “a” é criado, independente de existir uma string igual no repositorio. Por isso que (b == c) resulta em false, eles apontam para objetos diferentes!
Já o método equals compara os valores de cada String, por isso… é sempre indicado o uso do método equals, que funciona em qualquer caso.
Ótima resposta! Acabou com a minha dúvida!
Obrigado!