Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprende Pool de Cadenas, Método Equals() | Cadena
Practice
Projects
Quizzes & Challenges
Quizzes
Challenges
/
Fundamentos de Java

bookPool 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

Main.java

copy
123456789
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); } }

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

Main.java

copy
1234567891011
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)); } }

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

Main.java

copy
1234567891011
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))); } }

Ahora podemos ver que tenemos la comparación correcta.

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 5. Capítulo 7

Pregunte a AI

expand

Pregunte a AI

ChatGPT

Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla

Suggested prompts:

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?

bookPool 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

Main.java

copy
123456789
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); } }

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

Main.java

copy
1234567891011
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)); } }

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

Main.java

copy
1234567891011
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))); } }

Ahora podemos ver que tenemos la comparación correcta.

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 5. Capítulo 7
some-alt