Conteúdo do Curso
Noções Básicas de Java
Noções Básicas de Java
Pool de Strings, Método equals()
Método equals()
Este capítulo oferece uma visão geral do método equals()
. Este método é utilizado para comparar objetos e é comumente usado com objetos String. Vamos examinar um exemplo de criação de duas variáveis string idênticas e compará-las usando "==":
Main
package com.example; public class Main { public static void main(String[] args) { String first = new String("string"); String second = new String("string"); System.out.println(first == second); } }
Na resposta, recebemos "false", mas por quê? Os valores das duas variáveis de string são os mesmos e iguais a "string". Isso acontece porque "==" compara as referências dos objetos na memória, e não os valores reais. Nossos objetos estão fora do pool de strings.
Pool de Strings
O que é o pool de strings? É uma área na memória heap que é alocada ao criar objetos string. Se criarmos um objeto string com o valor "string" e depois criarmos outro objeto String com o mesmo valor, ambos os objetos apontarão para o mesmo objeto na memória, que está localizado no pool de strings.
Então, por que recebemos "false" no nosso caso? É porque contornamos o pool de strings criando objetos com a sintaxe String first = new String("string");
. Quando criamos um objeto String usando uma sintaxe diferente, como String first = "string";
, ele será colocado no pool de strings.
Vamos considerar um exemplo de código:
Main
package com.example; public class Main { public static void main(String[] args) { String first = "string"; String second = "string"; String third = new String("string"); System.out.println("Result of comparing first and second: " + (first == second)); System.out.println("Result of comparing first and third: " + (first == third)); } }
Vamos considerar um diagrama explicando como isso funciona e quais objetos estão no String Pool
.
Como comparamos os valores das strings no Pool de Strings e aquelas que estão fora dele? Para isso, o Java fornece o método equals
, que compara os valores dos nossos objetos String
em vez de suas referências. Vamos considerar um exemplo de código onde comparamos strings usando o método equals
em vez de ==
.
Main
package com.example; public class Main { public static void main(String[] args) { String first = "string"; String second = "string"; String third = new String("string"); System.out.println("Result of comparing first and second: " + (first.equals(second))); System.out.println("Result of comparing first and third: " + (first.equals(third))); } }
Agora podemos ver que temos a comparação correta.
Nota
Use o método
equals()
em vez de==
ao trabalhar comString
.
Obrigado pelo seu feedback!