Literales de string de Java como constantes o singletons

String es una secuencia de caracteres, que se usa ampliamente en la programación Java. En el lenguaje de programación Java, las strings son objetos. En Java, la máquina virtual solo puede crear una sola instancia de string en la memoria, si usamos la misma string en otras declaraciones de variables de string. Consideremos las ilustraciones en aras de la comprensión, que es la siguiente:

Ilustración 1:

String string1 = "GeeksForGeeks";
String string2 = "GeeksForGeeks";

En el ejemplo anterior, la máquina virtual Java creará solo una instancia de «GeeksForGeeks» en la memoria. Hay dos variables diferentes, inicializadas a la string «GeeksForGeeks» apuntará a la misma instancia de string en la memoria. La siguiente figura muestra un ejemplo con mayor precisión: – 

El literal de string se convierte así en una constante o singleton de facto. Más precisamente en Java, los objetos que representan los literales de strings de Java se obtienen de un conjunto de strings constantes que una máquina virtual de Java mantiene internamente. Esto significa que incluso las clases de diferentes proyectos compilados por separado, pero que se usan en la misma aplicación, pueden compartir objetos String constantes. El intercambio ocurre en tiempo de ejecución y, por lo tanto, no es una función de tiempo de compilación.

Ilustración 2: si queremos que esas dos variables de string apunten a objetos de string separados, entonces usamos el nuevo operador de la siguiente manera:

String string1 = new String("GeeksForGeeks");
String string2 = new String("GeeksForGeeks");

El código anterior creará dos objetos de memoria diferentes en la memoria para representarlos incluso si el valor de las dos strings es el mismo. La siguiente imagen muestra el uso del nuevo operador:

Nota: En la imagen de arriba, se muestra claramente que se crean dos bloques de memoria diferentes para dos strings diferentes que contienen la misma string de valor.

Ejemplo 1:

Java

// Java Program to Illustrate String Literals as
// Constants or Singletons
  
// Main class
// StringSingleton
public class GFG {
  
    // Main driver method
    public static void main(String[] args)
    {
  
        // Strings
        String string1 = "GeeksForGeeks";
        String string2 = "GeeksForGeeks";
        String string3 = new String("GeeksForGeeks");
        String string4 = new String("GeeksForGeeks");
  
        // Checking if two string are same or not
        if (string1 == string2) {
  
            // Returns true
            System.out.println("True");
        }
        else {
  
            // Returns false
            System.out.println("False");
        }
  
        // Again checking if two string are same or not
        if (string1 == string3) {
  
            // Returns false
            System.out.println("True");
        }
        else {
  
            System.out.println("False");
        }
  
        // Again checking if two string are same or not
        if (string4 == string3) {
  
            // Returns false
            System.out.println("True");
        }
        else {
            System.out.println("False");
        }
    }
}
Producción

True
False
False

En el programa anterior, se crearán un total de 3 objetos. Ahora, si queremos comparar el contenido de 2 strings, podemos usar el método de igualdad, y el operador ‘==’ se puede usar para comparar si las referencias de dos strings son iguales o no.

Ejemplo 2:

Java

// Java Program to Illustrate String Literals as
// Constants or Singletons
  
// Main class
// StringSingleton
public class GFG {
  
    // Main driver method
    public static void main(String[] args)
    {
        // Strings
        String string1 = "GeeksForGeeks";
        String string3 = new String("GeeksForGeeks");
  
        // Print and display statements
  
        // Displays true
        System.out.println(string1.equals(string3));
  
        // Displays false
        System.out.println(string1 == string3);
    }
}
Producción

true
false

Publicación traducida automáticamente

Artículo escrito por shantanujain18 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 *