Pool de Strings, Método equals()
O método equals()
Este capítulo apresenta uma breve visão geral do método equals(). Este método é utilizado para comparar objetos e é comumente aplicado a objetos do tipo String. Veja um exemplo de criação de duas variáveis de string idênticas e comparação utilizando ==:
Main.java
123456789package 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, obtemos "false", mas por quê? Os valores das duas variáveis de string são iguais e correspondem a "string". Isso ocorre porque == compara as referências dos objetos na memória, e não os valores reais. Nossos objetos estão fora do String pool.
String pool
O que é o String Pool? É uma área na memória heap que é alocada ao criar objetos do tipo string. Se criarmos um objeto String com o valor "string" e, em seguida, criarmos outro objeto String com o mesmo valor, ambos os objetos irão referenciar o mesmo objeto na memória, que está localizado no string pool.
Então, por que recebemos "false" em nosso caso? Isso acontece porque ignoramos o string pool ao criar objetos usando a sintaxe String first = new String("string");. Quando criamos um objeto String utilizando uma sintaxe diferente, como String first = "string";, ele será colocado no string pool.
Vamos analisar um exemplo de código:
Main.java
1234567891011package 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 analisar um diagrama explicando como funciona e quais objetos estão no String Pool.
Como comparar os valores das strings no String Pool e fora dele? Para isso, Java fornece o método equals, que compara os valores dos objetos String em vez de suas referências. Veja um exemplo de código onde as strings são comparadas usando o método equals em vez de ==.
Main.java
1234567891011package 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.
Obrigado pelo seu feedback!
Pergunte à IA
Pergunte à IA
Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo
Awesome!
Completion rate improved to 2.7
Pool de Strings, Método equals()
Deslize para mostrar o menu
O método equals()
Este capítulo apresenta uma breve visão geral do método equals(). Este método é utilizado para comparar objetos e é comumente aplicado a objetos do tipo String. Veja um exemplo de criação de duas variáveis de string idênticas e comparação utilizando ==:
Main.java
123456789package 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, obtemos "false", mas por quê? Os valores das duas variáveis de string são iguais e correspondem a "string". Isso ocorre porque == compara as referências dos objetos na memória, e não os valores reais. Nossos objetos estão fora do String pool.
String pool
O que é o String Pool? É uma área na memória heap que é alocada ao criar objetos do tipo string. Se criarmos um objeto String com o valor "string" e, em seguida, criarmos outro objeto String com o mesmo valor, ambos os objetos irão referenciar o mesmo objeto na memória, que está localizado no string pool.
Então, por que recebemos "false" em nosso caso? Isso acontece porque ignoramos o string pool ao criar objetos usando a sintaxe String first = new String("string");. Quando criamos um objeto String utilizando uma sintaxe diferente, como String first = "string";, ele será colocado no string pool.
Vamos analisar um exemplo de código:
Main.java
1234567891011package 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 analisar um diagrama explicando como funciona e quais objetos estão no String Pool.
Como comparar os valores das strings no String Pool e fora dele? Para isso, Java fornece o método equals, que compara os valores dos objetos String em vez de suas referências. Veja um exemplo de código onde as strings são comparadas usando o método equals em vez de ==.
Main.java
1234567891011package 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.
Obrigado pelo seu feedback!