2010-12-19 28 views
11
long a = 1111; 
Long b = 1113; 

if(a == b) 
{ 
    System.out.println("Equals"); 
}else{ 
    System.out.println("not equals"); 
} 

el código anterior imprime un "igual" en la consola, que es una respuesta incorrecta. mi pregunta es cómo comparar un valor de variable largo es igual al valor de variable Largo. por favor, repíteme lo antes posible.Cómo comparar un valor largo es igual al valor largo

Thankh que

+7

Este código no se compilará. La segunda línea requiere un valor largo y está proporcionando un int. Debe ser largo b = 1113L; Aún así, imprime la respuesta correcta. –

Respuesta

26

Primero, no se compila el código. Línea larga b = 1113;

es incorrecto. Tienes que decir

Long b = 1113L; 

En segundo lugar cuando arreglé este problema de compilación, el código impreso "no es igual".

9

Funciona como se esperaba,

trata de leer IdeOneDemo

public static void main(String[] args) { 
     long a = 1111; 
     Long b = 1113l; 

     if (a == b) { 
      System.out.println("Equals"); 
     } else { 
      System.out.println("not equals"); 
     } 
    } 

impresiones

not equals para mí

Uso compareTo() para comparar Long, == no funcionará en todos los casos en la medida en que el valor se guarde en caché

+1

Tiene razón, pero no importa en este caso. Autoboxing hace su trabajo. – AlexR

+2

@AlexR Auto * un * boxing. Si se autoboxan '1234L' y' Long.valueOf (1234L) '* may * no son iguales. Como siempre con referencias, si 'b' es' null' explota. (Se prefiere el sufijo mayúscula y mayúscula, ya que es difícil confundirlo con 1.) –

+2

longs no se puede comparar con ==.La teoría establece que debe usar un truco simple como restar el uno del otro y ver la diferencia relevante. – hephestos

7
long a = 1111; 
Long b = new Long(1113); 

System.out.println(b.equals(a) ? "equal" : "different"); 
System.out.println((long) b == a ? "equal" : "different"); 
3

Por un lado largo es un objeto, mientras que en el otro lado largo es un tipo primitivo. Con el fin de compararlos podría obtener el tipo primitivo del tipo Long:

public static void main(String[] args) { 
    long a = 1111; 
    Long b = 1113; 

    if ((b!=null)&& 
     (a == b.longValue())) 
    { 
     System.out.println("Equals"); 
    } 
    else 
    { 
     System.out.println("not equals"); 
    } 
} 
1

que voy a compartir Cómo lo hago desde Java 7 -

Long first = 12345L, second = 123L; 
System.out.println(first.equals(second)); 

salida que se devuelve: falsa

y segundo ejemplo de partido es -

Long first = 12345L, second = 12345L; 
System.out.println(first.equals(second)); 

salida que se devuelve: verdadera

Por lo tanto, yo creo en igual método para comparar el valor del objeto, Esperanza que ayuda Gracias a ti.

0
public static void main(String[] args) { 
     long a = 1111; 
     Long b = 1113L; 
     if(a == b.longValue()) 
    { 
     System.out.println("Equals"); 
    }else{ 
     System.out.println("not equals"); 
    } 
    } 

or: 

    public static void main(String[] args) { 
     long a = 1111; 
     Long b = 1113L; 
     if(a == b) 
    { 
     System.out.println("Equals"); 
    }else{ 
     System.out.println("not equals"); 
    } 
    } 
Cuestiones relacionadas