Eu aprendi que uma String deve ser sempre comparada utilizando o método equals e sempre foi assim… Se eu comparar duas strings, de mesmo conteúdo, com o operador == ele sempre dará falso. Essa semana um amigo me disse que se eu comprar 2 strings com == funcionaria e assim criei uma classe com void main criei duas strings e comparei e pra minha surpresa ele me retornou true. Já li no livro de certificação da kathy que se os objetos tem valores iguais por economia de memória o java faz as duas referências apontarem para o mesmo objeto mas pq isso n acontece quando programo para web?
Como no seu exemplo vc está utilizando uma constante (“diego”), o resultado será true mesmo que você o execute na web , mas se voce utilizar um request.getParameter , estará recebendo objetos String diferentes, por isso o resultado de “==” vai retornar false.
L
lcm4693PJ
Como assim uma constante? Não entendi.
Seria como se o método request.getParameter tivesse criado uma String pelo comando new?
M
marciomarcPJ
Como a String “diego” está fixa no seu código, ela será colocada no pool de String apenas uma vez , independente de quantas vezes ela apareça no seu código, e como o “==” está avaliando se teste e teste1 estão referenciam o mesmo objeto String “diego”, o resultado é true.Agora imagine que vc tem uma página com dois campos input,chamados v1 e v2, e vc tem o seguinte código no servlet: