Comparación de objetos enteros en caja automática en Java

Cuando asignamos un valor entero a un objeto Integer, el valor se encuadra automáticamente en un objeto Integer. Por ejemplo, la declaración «Entero x = 10» crea un objeto ‘x’ con valor 10.

A continuación se presentan algunas preguntas de salida interesantes basadas en la comparación de objetos enteros en caja automática.

Predecir la salida del siguiente programa Java

// file name: Main.java
public class Main {
    public static void main(String args[]) {
         Integer x = 400, y = 400;
         if (x == y)
            System.out.println("Same");
         else
            System.out.println("Not Same");
    }
}

Producción:

Not Same

Dado que x e y se refieren a objetos diferentes, obtenemos la salida como «No es lo mismo»

El resultado del siguiente programa es una sorpresa de Java.

// file name: Main.java
public class Main {
    public static void main(String args[]) {
         Integer x = 40, y = 40;
         if (x == y)
            System.out.println("Same");
         else
            System.out.println("Not Same");
    }
}

Producción:

Same

En Java, los valores de -128 a 127 se almacenan en caché, por lo que se devuelven los mismos objetos. La implementación de valueOf() usa objetos almacenados en caché si el valor está entre -128 y 127.

Si creamos explícitamente objetos Integer usando un nuevo operador, obtenemos el resultado como «No es el mismo». Consulte el siguiente programa Java. En el siguiente programa, valueOf() no se usa.

// file name: Main.java
public class Main {
    public static void main(String args[]) {
          Integer x = new Integer(40), y = new Integer(40);
         if (x == y)
            System.out.println("Same");
         else
            System.out.println("Not Same");
    }
}

Producción:

Not Same

Prediga la salida del siguiente programa. Este ejemplo es aportado por Bishal Dubey .

class GFG
{
    public static void main(String[] args)
    {
    Integer X = new Integer(10);
    Integer Y = 10;
  
    // Due to auto-boxing, a new Wrapper object
    // is created which is pointed by Y
    System.out.println(X == Y);
    }
}

Producción:

false

Explicación: Aquí se crearán dos objetos. El primer objeto señalado por X debido a la llamada del nuevo operador y el segundo objeto se crearán debido al encuadre automático.

Este artículo ha sido compilado por Abhay Rathi . 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 *