¿Cómo inicializar y comparar strings en Java?

Como todos sabemos, String es inmutable en Java, por lo que da lugar a dos formas de inicialización, ya que tenemos el concepto de String Pool en Java.

Formas: Inicializar strings en Java

  1. Inicialización directa
  2. Inicialización indirecta

Vía 1: Inicialización directa (Constante de string)

En este método, se creará un objeto constante de string en el área agrupada de strings que se encuentra dentro del área del montón en la memoria. Como es una constante , no podemos modificarla, es decir, la clase String es inmutable.

Ilustración:  

String str = "GeeksForGeeks"; 

str = "geeks"; // This statement will make str 
               // point to new String constant("geeks")
               // rather than modifying the previous 
               // String constant.

Desde los medios de izquierda 

String str = "GeeksForGeeks"; 

De los medios correctos arriba 

str = "geeks"; 

Nota: si volvemos a escribir str = «GeeksForGeeks» en la siguiente línea, entonces primero verifica si la constante de string dada está presente en el área agrupada de strings o no. Si está presente, str lo señalará; de lo contrario, crea una nueva constante de string. 

Vía 2: Inicialización de Objetos (Dinámico)

En este método, se creará un objeto String en el área del montón (no dentro del área agrupada de String como en mayúsculas). No podemos modificarlo (como en mayúsculas). También con el mismo valor, también se crea una constante de string en el área agrupada de strings, pero la variable apuntará al objeto de string solo en el área del montón.

Ilustración:

String str = new String("very");
str = "good";     

Podemos sacar algunas conclusiones de ellos de la siguiente manera:

A la izquierda de los siguientes medios 

String str = new String("very"); 

A la derecha de los siguientes medios de comunicación de la siguiente manera:

str = "good" 

Ahora, esta es una asignación directa, por lo que se crea una constante de string con el valor «bueno» en el área agrupada de strings y str apuntará a eso. 

Nota: si escribimos nuevamente str = new String («muy») , entonces creará un nuevo objeto con el valor «muy», en lugar de apuntar a los objetos disponibles en el área del montón con el mismo valor. Pero si escribimos str = » very” , luego apuntará al objeto constante String con valor “very”, presente en el área agrupada de String.

Métodos: comparación de strings y sus referencias

  1. método equals(): compara valores de string para la igualdad. El tipo de retorno es booleano. En casi todas las situaciones puedes usar useObjects.equals().
  2. Operador ==: Compara referencias, no valores . El tipo de retorno es booleano. == se usa en situaciones excepcionales en las que sabe que está tratando con strings internas.
  3. método compareTo(): ​​compara valores lexicográficamente y devuelve un valor entero que describe si la primera string es menor, igual o mayor que la segunda string. Por ejemplo, si str1 y str2 son dos variables de string, consulte a continuación de la siguiente manera:
    • str1 == str2 : devuelve 0
    • str1 > str2 : devuelve un valor positivo
    • str1 < str2 : devuelve un valor negativo

Nota: Los valores positivos y negativos devueltos por el método compareTo son la diferencia del primer carácter no coincidente en las dos strings.

Implementación: discutiremos cómo comparar con strings para justificar lo dicho anteriormente a través del siguiente ejemplo

Ejemplo:

Java

// Java program to Illustrate Comparison of Two Strings
 
// Main class
public class GFG {
 
    // Main driver method
    public static void main(String[] args)
    {
        // Custom input strings to compare
        String s1 = "Ram";
        String s2 = "Ram";
        String s5 = "Shyam";
 
        String s3 = new String("Ram");
        String s4 = new String("Ram");
 
        // Checking whether strings are equal or not
        // with help of equals() method
        System.out.println(
            " Comparing strings with equals:");
        System.out.println(s1.equals(s2));
        System.out.println(s1.equals(s3));
        System.out.println(s1.equals(s5));
 
        String nulls1 = null;
        String nulls2 = null;
 
        // NullPointerException will be throws if
        // we try to compare nulls strings
        // System.out.println(nulls1.equals(nulls2));
 
        // Comparing strings using == operator
        System.out.println(" Comparing strings with ==:");
        System.out.println(s1 == s2);
        System.out.println(s1 == s3);
        System.out.println(s3 == s4);
        System.out.println(nulls1 == nulls2);
 
        // Comparing strings via compareTo() method
        System.out.println(
            " Comparing strings via compareTo() Method :");
        System.out.println(s1.compareTo(s3));
        System.out.println(s1.compareTo(s5));
 
        // NullPointerException if we try to compare strings
        // with usage of compareTo() method
        // System.out.println(nulls1.compareTo(nulls2));
    }
}
Producción

 Comparing strings with equals:
true
true
false
 Comparing strings with ==:
true
false
false
true
 Comparing strings via compareTo() Method :
0
-1

Este artículo es una contribución de Gaurav Miglani . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks. Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *