Ajuda com comparação entre Strings

Re: Ajuda com comparação entre Strings

por Marcelo Queiroz -
Número de respostas: 0
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.