Ver Mensaje Individual
  #6 (permalink)  
Antiguo 28/03/2014, 22:50
posman
 
Fecha de Ingreso: enero-2008
Mensajes: 614
Antigüedad: 17 años
Puntos: 57
Respuesta: ahora no entiendo == equals

Al comparar 2 variables de tipo Integer no importa si ocupan el mismo espacio de memoria. Existen un tipo de clases que lo que hacen es enmascarar un dato de tipo primitivo, se llaman Wrapper classes. Lo que hace el compilador con estas clases es convertir una variable Integer en int o viceversa. Por ejemplo puedes comparar una variable int con una variable Integer y el resultado es el esperado al utilizar == (se compara el valor numerico, no su posicion en memoria)
Este proceso se llama autoboxing y unboxing http://docs.oracle.com/javase/tutori...utoboxing.html

Un compilador no podria optimizar un codigo en donde el valor de la variable se pida al usuario (es imposible que el compilador sepa que valor escribira el usuario). Con este codigo se obtiene el mismo resultado que tu obtienes en tu codigo, pero aqui uno de los valores se pide al usuario

Código Java:
Ver original
  1. import java.util.Scanner;
  2.  
  3. public class Prueba {
  4.     public static void main(String []args) {
  5.         int entero1 = 50;
  6.         Integer entero2 = 50;
  7.         System.out.println("entero1 == entero2: " + (entero1==entero2));  //se comparan variables de diferente tipo
  8.        
  9.         Scanner in = new Scanner(System.in);
  10.         int entero3 = in.nextInt();
  11.         System.out.println("entero2 == entero3: " + (entero2==entero3));
  12.     }
  13. }