java larga determina si un valor igual a

Durante mucho tiempo un valor igual para determinar si el uso de "==", encontró un problema

pública  clase de demostración {
     públicas  estáticas  void main (String [] args) { 
        largo m = 1 litro ; 
        Larga n = 1L ;
        si (m == n) { 
            System.out.println ( "m等于n" ); 
        } Más { 
            System.out.println ( "m不等于n" ); 
        } 
    } 
}

exportación

  m es igual a n

pública  clase de demostración {
     públicas  estáticas  void main (String [] args) { 
        largo m = 128L ; 
        Larga n = 128L ;
        si (m == n) { 
            System.out.println ( "m等于n" ); 
        } Más { 
            System.out.println ( "m不等于n" ); 
        } 
    } 
}

exportación

  m no es igual a n

Motivo:

  Si el valor largo entre [-127,128], con "==" es una igualdad se determina si hay problema 

  Si no lo hace [-127,128] entre, un nuevo objeto será nuevo, no utilice "=="

pública  estática largo valueOf ( larga l) {
         definitiva  int offset = 128 ;
        si (l> = -128 && l <= 127) { // depositará 
            volver LongCache.cache [( int ) l + desplazamiento]; 
        } 
        Devolver  nueva largo (l); 
}

la solución

  (1) el uso  . LongValue ()

pública  clase de demostración {
     públicas  estáticas  void main (String [] args) { 
        largo m = 128L ; 
        Larga n = 128L ;
        si (m.longValue () == n.longValue ()) { 
            System.out.println ( "m等于n" ); 
        } Más { 
            System.out.println ( "m不等于n" ); 
        } 
    } 
}

exportación

  m es igual a n

  (2) usando .equals ()

pública  clase de demostración {
     públicas  estáticas  void main (String [] args) { 
        largo m = 128L ; 
        Larga n = 128L ;
        si (m.equals (n)) { 
            System.out.println ( "m等于n" ); 
        } Más { 
            System.out.println ( "m不等于n" ); 
        } 
    } 
}

exportación

  m es igual a n

Y agregó:

  La mejor solución para .eques ()

públicas  boolean equals (Object obj) {
         si (obj instanceof Long) {
             retorno valor == ((Long) obj) .longValue (); 
        } 
        Devolver  falsa ; 
}

 

Supongo que te gusta

Origin www.cnblogs.com/baby123/p/12448675.html
Recomendado
Clasificación