Comparação de variáveis!

5 respostas
elementx

Boa tarde a todos!!

Estou tendo problemas com o seguinte código:

<% String xS = session.getId(); String xPS = request.getParameter("xSSID"); if ( xS == xPS ) { response.sendRedirect("http://www.ig.com.br"); } <%=xS%> <%=xPS%> %&gt

Não sou redirecionado para a página indicada!
Mas se eu for ver o conteúdo das variáveis, elas são identicas!

Se puderem me ajudar, fico agradecido!
Sem mais,

Garcia.

5 Respostas

G

Quando se compara conteúdo de Strings se usa o método equals…
ficando assim

if ( xS.equals(xPS) ) {
 		response.sendRedirect("http://www.ig.com.br");
 }

tenta isto e vê se funciona…

flw.

cassio

Olá,

Para comparar Strings vc nao pode usar o operador ==.
Use o método equals() da classe String para fazer a comparação

String str1 = "abcdef";
String str2 = "abcdef";
String str3 = "abc";

if(str1 == str2) System.out.println("Operador == funciona para Strings");
else System.out.println("operador ==  NAO funciona para Strings");

if(str1.equals(str2)) System.out.println("Metodo equals() compara Strings corretamente!");
else System.out.println("Parece que o equals nao funciona!");

if(!str1.equals(str3)) System.out.println("Realmente, str1 e str2 sao diferentes!");

Quando vc utiliza o operador == para comparar Strings na verdade vc está comparando objetos na memória e não o conteúdo destes objetos. Como cada String é um objeto distinto, essa igualdade nunca retornará verdadeiro )

G

só complementando que quando se usa == se compara a referência ao objeto na memória…

flw

LuizLG

Porém, a primeira comparação com == vai dar verdadeiro porque o Java vai alocar espaço para um objeto String, sendo referenciado pelo str1 e str2

Agora se as strings foram criadas assim

String str1 = "abcdef"; String str2 = new String("abcdef");
serão dois objetos diferentes.

elementx

Obrigado!!

Deu certo!

Criado 14 de fevereiro de 2007
Ultima resposta 14 de fev. de 2007
Respostas 5
Participantes 4