Pool de Cadenas, Método Equals()
El método equals()
Este método se utiliza para comparar objetos y es comúnmente empleado con objetos de tipo String. Examinemos un ejemplo de cómo crear dos variables de cadena idénticas y compararlas 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); } }
El resultado es false porque == compara las referencias de los objetos, no sus valores reales. Aunque ambas cadenas contienen "string", son objetos diferentes en memoria y se crean fuera del String pool.
String pool
El String Pool es una parte de la memoria heap donde se almacenan los literales de cadena. Cuando se crean cadenas con el mismo valor utilizando literales, hacen referencia al mismo objeto en memoria.
¿Entonces por qué obtuvimos false? Porque evitamos el string pool al usar new String("string"), lo que crea un nuevo objeto en memoria. Al utilizar String first = "string";, la cadena se coloca en el string pool y puede ser compartida.
Veamos un ejemplo 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)); } }
Consideración de un diagrama que explica cómo funciona y qué objetos se encuentran en el String Pool.
¿Cómo se comparan los valores de las cadenas en el String Pool y las que están fuera de él? Para este propósito, Java proporciona el método equals, que compara los valores de los objetos String en lugar de sus referencias. Consideración de un ejemplo de código donde se comparan cadenas utilizando el método equals en lugar 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))); } }
Ahora podemos ver que tenemos la comparación correcta.
¡Gracias por tus comentarios!
Pregunte a AI
Pregunte a AI
Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla
Can you explain more about the difference between the string pool and heap memory?
Why does using `new String("text")` create a different object than using string literals?
Can you show an example where using `==` works as expected with strings?
Genial!
Completion tasa mejorada a 2.7
Pool de Cadenas, Método Equals()
Desliza para mostrar el menú
El método equals()
Este método se utiliza para comparar objetos y es comúnmente empleado con objetos de tipo String. Examinemos un ejemplo de cómo crear dos variables de cadena idénticas y compararlas 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); } }
El resultado es false porque == compara las referencias de los objetos, no sus valores reales. Aunque ambas cadenas contienen "string", son objetos diferentes en memoria y se crean fuera del String pool.
String pool
El String Pool es una parte de la memoria heap donde se almacenan los literales de cadena. Cuando se crean cadenas con el mismo valor utilizando literales, hacen referencia al mismo objeto en memoria.
¿Entonces por qué obtuvimos false? Porque evitamos el string pool al usar new String("string"), lo que crea un nuevo objeto en memoria. Al utilizar String first = "string";, la cadena se coloca en el string pool y puede ser compartida.
Veamos un ejemplo 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)); } }
Consideración de un diagrama que explica cómo funciona y qué objetos se encuentran en el String Pool.
¿Cómo se comparan los valores de las cadenas en el String Pool y las que están fuera de él? Para este propósito, Java proporciona el método equals, que compara los valores de los objetos String en lugar de sus referencias. Consideración de un ejemplo de código donde se comparan cadenas utilizando el método equals en lugar 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))); } }
Ahora podemos ver que tenemos la comparación correcta.
¡Gracias por tus comentarios!