Comparando Strings

Amigos, vocês sabem como posso comparar duas Strings de modo que possa ser verificado que determinada string é diferente de outra? Exemplificando: String a,b; … while (a!=b)… ou … if (a!=b)…
Sei que não se usa != para comparar strings e sim o método equals. Todavia, a sintaxe que sei apenas compara verificando se as strings são iguais. Como faço para verificar se são diferentes (tipo while (a!=b)) ?
Fico grata a quem puder ajudar.

Ok. Rapazes. Ótimas dicas. Problema resolvido. Sinceros agradecimentos a Thingol, Thiago, GraveDigger, Otavio, ViniGodoy, Paulohrl.

a == b --&gt use a.equals (b)
a != b -&gt use !a.equals (b)
a &lt b -&gt use a.compareTo(b) &lt 0
a &gt b -&gt use a.compareTo(b) &gt 0

while (a.equals(b) == false)

ou

while (a.compareTo(b)) != 0)

Márcia, o operador == ou != usa-se somente para comparar referência Objetos e tipos primitivos.

Para comprar valores de objetos, usa-se o método equals como o Thingol já lhe mostrou e exemplificou.

[quote=paulohrl]while (a.equals(b) == false)
[/quote]
Só para constar, o trecho …== false não é obrigatório, mas deixa o código mais claro!

[quote=thiago.correa][quote=paulohrl]while (a.equals(b) == false)
[/quote]
Só para constar, o trecho …== false não é obrigatório, mas deixa o código mais claro![/quote]

Na verdade eh obrigado sim, no caso dela querer executar um loop caso as string sejam diferentes, terá q usar o == false, se não o bloco nem será executado!!

Claro q ela poderia usar while (!a.equals(b)), mas a sua colocação está incorreta(tenho certeza q vc viu uma exclamação ali,hehe).

O equals compara se todos os char de uma string são iguais, o que na grande maioria das vezes já é suficiente.

Caso você tenha Strings com texto em idiomas orientais, ou mesmo em alguns casos que usem acentuação, você deverá usar o equals da classe Collator.

Basicamente é praticamente igual ao equals da classe String:

a == b Collator.getInstance().equals(string1, string2) ou
Collator.getInstance().compare(string1, string2) == 0

a != b !Collator.getInstance().equals(string1, string2)
a &lt b Collator.getInstance().compare(string1, string2) &lt 0
a &gt b Collator.getInstance().compare(string1, string2) &gt 0

Para mais informações sobre o assunto, dê uma olhada em:

Essa é uma daquelas dicas para-quedas. Você dificilmente vai precisar dela, mas vai ser muito bom contar com ela quando for necessário…

[quote=thiago.correa][quote=paulohrl]while (a.equals(b) == false)
[/quote]
Só para constar, o trecho …== false não é obrigatório, mas deixa o código mais claro![/quote]

O problema do Java é ter herdado esses operadores do C. Se Java tivesse pegado as idéias do Pascal teríamos:

while a <> b do

que é muito mais claro que essa história de comparar com “true” ou “false”.

Tem razão. É por essas e outras que o Pascal é considerado uma linguagem didática.

[quote=GraveDigger]
Claro q ela poderia usar while (!a.equals(b)), mas a sua colocação está incorreta(tenho certeza q vc viu uma exclamação ali,hehe).[/quote]

Hã :?: :?: :?: :?: ! :roll:
Com certeza, se tivesse colocado !a.equals(b) eu nem teria metido o bico!

sempre uso

while (!a.equals(b))

acho mais bacana pensa como uma frase: “while not a equals b”

[quote=ViniGodoy]O equals compara se todos os char de uma string são iguais, o que na grande maioria das vezes já é suficiente.

Caso você tenha Strings com texto em idiomas orientais, ou mesmo em alguns casos que usem acentuação, você deverá usar o equals da classe Collator.

Basicamente é praticamente igual ao equals da classe String:

a == b Collator.getInstance().equals(string1, string2) ou
Collator.getInstance().compare(string1, string2) == 0

a != b !Collator.getInstance().equals(string1, string2)
a &lt b Collator.getInstance().compare(string1, string2) &lt 0
a &gt b Collator.getInstance().compare(string1, string2) &gt 0

Para mais informações sobre o assunto, dê uma olhada em:

Essa é uma daquelas dicas para-quedas. Você dificilmente vai precisar dela, mas vai ser muito bom contar com ela quando for necessário…[/quote]

Outra coisa interessante, que já postei aqui, é usar o Collator para fazer comparação desprezando os acentos e cedilhas.

Exemplo:

String a = "Gisele da Conceição Bündchen";
String b = "gisele da conceicao bundchen";
Collator collator = Collator.getInstance (new Locale ("pt", "BR"));
collator.setStrength(Collator.PRIMARY); // importante!
// A linha a seguir imprime "true" indicando que a e b são iguais,
// se desprezarmos os acentos, cedilhas, minúsculas e maiúsculas.
System.out.println (collator.compare (a, b) == 0);