Ajuda com comparação entre Strings

Ajuda com comparação entre Strings

by Jefferson Oliveira Silva -
Number of replies: 2

Pessoal,

vejam o Scritp abaixo:

import java.util.*;

class TestaString
{
  public static void main (String [] args)
  {
    Scanner sc = new Scanner (System.in);
    String palavra, palavra1, palavra2;
   
    palavra1 = sc.next();
    palavra2 = sc.next();
   
    if ((palavra1+palavra2) == "ab")
      palavra = "c";
    else
      palavra = palavra1 + " " + palavra2;
   
    System.out.println (palavra);
  }
}


Minha dúvida é a seguinte: se eu digitar os valores "a" e "b", um em cada linha, ele deveria imprimir a palavra c, mas isso não está ocorrendo. A comparação entre variáveis do tipo String é diferente? Alguém tem uma dica?

Obrigado,
--
Jefferson

In reply to Jefferson Oliveira Silva

Re: Ajuda com comparação entre Strings

by Pablo Laura -
Olá,

tenta usar o método equals da classe String

String palavra = palavra1+palavra2;
if (palavra.equals("ab"))
{....}

[]'s


In reply to Jefferson Oliveira Silva

Re: Ajuda com comparação entre Strings

by Marcelo Queiroz -
Apenas um adendo à resposta do Pablo, é importante entender o porquê do exemplo original não funcionar... isso é conteúdo do capítulo 12 da apostila.

O fato é que a comparação if (palavra1+palavra2=="ab") não faz comparação do conteúdo das Strings (apesar disso ser o que gostaríamos de comparar), mas sim das referências aos objetos, um deles criado pela expressão palavra1+palavra2, e outro criado pela expressão "ab". Os dois objetos do tipo String residem em lugares diferentes da memória, e são esses "lugares" (referências) que estão sendo comparados.

O mesmo raciocínio vale para quaisquer objetos "complexos" (tudo fora int, double, boolean, char e similares), e também para quaisquer classes que nós criemos em nossos programas. Em geral estamos interessados em comparar o conteúdo dos objetos, e não a referência deles, por isso precisamos usar (ou criar) métodos específicos para comparar conteúdos.