Comparacao de String com NULL

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!