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() | String
Fundamentos de Java
course content

Contenido del Curso

Fundamentos de Java

Fundamentos de Java

1. Primeros Pasos
2. Tipos Básicos y Operaciones
3. Bucles
4. Arreglos
5. String

book
Pool de Cadenas, Método Equals()

El método equals()

Este capítulo proporciona una breve descripción general del método equals(). Este método se utiliza para comparar objetos y es comúnmente usado con objetos de tipo String. Examinemos un ejemplo de creación de dos variables de cadena idénticas y su comparación utilizando ==:

java

Main

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

En la respuesta, obtenemos "false", ¿pero por qué? Los valores de las dos variables de cadena son iguales y ambos son "string". Esto se debe a que == compara las referencias a los objetos en memoria, no los valores reales. Nuestros objetos están fuera del String pool.

String pool

¿Qué es el String Pool? Es un área en la memoria heap que se asigna al crear objetos de tipo String. Si creamos un objeto String con el valor "string" y luego creamos otro objeto String con el mismo valor, ambos objetos harán referencia al mismo objeto en memoria, que se encuentra en el string pool.

Entonces, ¿por qué obtuvimos "false" en nuestro caso? Es porque evitamos el string pool al crear objetos utilizando la sintaxis String first = new String("string");. Cuando creamos un objeto String utilizando una sintaxis diferente, como String first = "string";, este se ubicará en el string pool.

Consideremos un ejemplo de código:

java

Main

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

Consideremos 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 nuestros objetos String en lugar de sus referencias. Consideremos un ejemplo de código donde comparamos cadenas utilizando el método equals en lugar de ==.

java

Main

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
ChatGPT

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

course content

Contenido del Curso

Fundamentos de Java

Fundamentos de Java

1. Primeros Pasos
2. Tipos Básicos y Operaciones
3. Bucles
4. Arreglos
5. String

book
Pool de Cadenas, Método Equals()

El método equals()

Este capítulo proporciona una breve descripción general del método equals(). Este método se utiliza para comparar objetos y es comúnmente usado con objetos de tipo String. Examinemos un ejemplo de creación de dos variables de cadena idénticas y su comparación utilizando ==:

java

Main

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

En la respuesta, obtenemos "false", ¿pero por qué? Los valores de las dos variables de cadena son iguales y ambos son "string". Esto se debe a que == compara las referencias a los objetos en memoria, no los valores reales. Nuestros objetos están fuera del String pool.

String pool

¿Qué es el String Pool? Es un área en la memoria heap que se asigna al crear objetos de tipo String. Si creamos un objeto String con el valor "string" y luego creamos otro objeto String con el mismo valor, ambos objetos harán referencia al mismo objeto en memoria, que se encuentra en el string pool.

Entonces, ¿por qué obtuvimos "false" en nuestro caso? Es porque evitamos el string pool al crear objetos utilizando la sintaxis String first = new String("string");. Cuando creamos un objeto String utilizando una sintaxis diferente, como String first = "string";, este se ubicará en el string pool.

Consideremos un ejemplo de código:

java

Main

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

Consideremos 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 nuestros objetos String en lugar de sus referencias. Consideremos un ejemplo de código donde comparamos cadenas utilizando el método equals en lugar de ==.

java

Main

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
Lamentamos que algo salió mal. ¿Qué pasó?
some-alt