Java Language El primitivo largo


Ejemplo

De forma predeterminada, long es un entero con signo de 64 bits (en Java 8, puede ser firmado o sin signo). Firmado, puede almacenar un valor mínimo de -2 63 , y un valor máximo de 2 63 - 1, y sin firmar puede almacenar un valor mínimo de 0 y un valor máximo de 2 64 - 1

long example = -42;
long myLong = 284;
long anotherLong = 73;

//an "L" must be appended to the end of the number, because by default,
//numbers are assumed to be the int type. Appending an "L" makes it a long
//as 549755813888 (2 ^ 39) is larger than the maximum value of an int (2^31 - 1),
//"L" must be appended 
long bigNumber = 549755813888L;

long addedLongs = myLong + anotherLong; // 284 + 73 = 357
long subtractedLongs = myLong - anotherLong; // 284 - 73 = 211

Los valores máximo y mínimo de long se pueden encontrar en:

long high = Long.MAX_VALUE;    // high == 9223372036854775807L
long low = Long.MIN_VALUE;     // low == -9223372036854775808L

El valor predeterminado de un long es 0L.

long defaultLong;    // defaultLong == 0L

Nota: la letra "L" adjunta al final del literal long distingue entre mayúsculas y minúsculas, sin embargo, es una buena práctica usar mayúscula, ya que es más fácil distinguirla del dígito uno:

2L == 2l;            // true

Advertencia: Java almacena en caché instancias de objetos enteros del rango -128 a 127. El razonamiento se explica aquí: https://blogs.oracle.com/darcy/entry/boxing_and_caches_integer_valueof

Se pueden encontrar los siguientes resultados:

Long val1 = 127L;
Long val2 = 127L;

System.out.println(val1 == val2); // true

Long val3 = 128L;
Long val4 = 128L;

System.out.println(val3 == val4); // false

Para comparar correctamente los valores de 2 objetos largos, use el siguiente código (desde Java 1.7 en adelante):

Long val3 = 128L;
Long val4 = 128L;

System.out.println(Objects.equal(val3, val4)); // true

La comparación de un largo primitivo con un objeto largo no dará como resultado un falso negativo como la comparación de 2 objetos con == hace.