Pool de Strings e o Método equals()
Deslize para mostrar o menu
O método equals()
Este método é utilizado para comparar objetos e é comumente usado com objetos String. Vamos analisar um exemplo de criação de duas variáveis de string idênticas e compará-las usando ==:
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); } }
O resultado é false porque == compara referências de objetos, não seus valores reais. Mesmo que ambas as strings contenham "string", elas são objetos diferentes na memória e são criadas fora do String pool.
String pool
O String Pool é uma parte da memória heap onde literais de string são armazenados. Quando você cria strings com o mesmo valor usando literais, elas referenciam o mesmo objeto na memória.
Então, por que recebemos false? Porque ignoramos o string pool ao usar new String("string"), que cria um novo objeto na memória. Ao usar String first = "string";, a string é colocada no string pool e pode ser compartilhada.
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 considerar um diagrama explicando como isso funciona e quais objetos estão no String Pool.
Como comparamos os valores de strings no String Pool e fora dele? Para esse propósito, 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.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.
Utilize o método equals() em vez de == ao trabalhar com String.
Obrigado pelo seu feedback!
Pergunte à IA
Pergunte à IA
Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo
Pool de Strings e o Método equals()
O método equals()
Este método é utilizado para comparar objetos e é comumente usado com objetos String. Vamos analisar um exemplo de criação de duas variáveis de string idênticas e compará-las usando ==:
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); } }
O resultado é false porque == compara referências de objetos, não seus valores reais. Mesmo que ambas as strings contenham "string", elas são objetos diferentes na memória e são criadas fora do String pool.
String pool
O String Pool é uma parte da memória heap onde literais de string são armazenados. Quando você cria strings com o mesmo valor usando literais, elas referenciam o mesmo objeto na memória.
Então, por que recebemos false? Porque ignoramos o string pool ao usar new String("string"), que cria um novo objeto na memória. Ao usar String first = "string";, a string é colocada no string pool e pode ser compartilhada.
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 considerar um diagrama explicando como isso funciona e quais objetos estão no String Pool.
Como comparamos os valores de strings no String Pool e fora dele? Para esse propósito, 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.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.
Utilize o método equals() em vez de == ao trabalhar com String.
Obrigado pelo seu feedback!