long example java file long-integer

example - long java max value



¿Por qué no puedo asignar un valor "largo" de 4 mil millones? (6)

Agregue L al final del número:

long bytes = 4294967296L;

Intento declarar un valor largo en Java, que desafortunadamente no funciona.

Este es mi código Resulta en el siguiente mensaje de error: "El literal 4294967296 de tipo int está fuera de rango".

long bytes = 4294967296;

Necesito este valor para hacer un filtro de archivos que filtra archivos que son más grandes que 4294967296 bytes (4GB). A la inversa, funciona sin problemas ( long size = file.length() ) con cada tamaño de archivo, por lo que no puedo entender por qué mi declaración no funciona.


La respuesta a su pregunta "por qué" se debe a 4294967296 no es larga. Por defecto, java busca en cualquier número como int o double type (dependiendo de si tiene o no tiene punto). Y solo luego convierta este número al tipo especificado (largo en su caso). Entonces, el error que ves significa que tu número es más grande que el valor máximo fot int. Al agregar un atributo literal al final, el compilador sabe qué tipo usar (b - bytes, s - corto, l - largo, f - flotante)


Para responder el título de su pregunta, se puede obtener el valor máximo de un largo a través de la constante:

Long.MAX_VALUE

Para resolver su problema, agregue el literal l ( L ) después del número.



intente long bytes = 4294967296L; para indicar al compilador que está usando un long .


long literales long son seguidos por la letra L o l (ver: JLS 3.10.1 ). La mayúscula es mejor porque es más legible, la minúscula se ve muy similar a 1 .

Para su número particular, probablemente sea más fácil escribir:

long bytes = (1L << 32);

De esta manera, alguien que lee el código puede decir rápidamente que los bytes son exactamente 2 a la potencia de 32.