Я пытаюсь объявить длинное значение в Java, который, к сожалению, не работает.
Это - мой код. Это приводит к следующему сообщению об ошибке: "Литеральный 4294967296 из интервала типа вне диапазона".
long bytes = 4294967296;
Мне нужно это значение, чтобы заставить файл отфильтровать, который отфильтровывает файлы, которые больше, чем 4294967296 байтов (4 ГБ). Наоборот работает без любых проблем (long size = file.length()
) с каждым размером файла, который является, почему я не могу выяснить, почему мое объявление не работает.
Добавьте L
в конец числа:
long bytes = 4294967296L;
Чтобы ответить на заголовок вашего вопроса, максимальное значение long можно получить с помощью константы:
Long.MAX_VALUE
Чтобы решить вашу проблему, добавьте литерал l
( L
) после номер.
попробуйте long bytes = 4294967296L;
, чтобы указать компилятору, что вы используете long
.
Суфиана права. Вот документ, который показывает, как объявлять литералы различных типов чисел в Java:
длинные
литералы сопровождаются буквой L
или l
(см.: JLS 3.10.1). Прописные буквы лучше, потому что они более разборчивы, а строчные л
слишком похожи на 1
.
Для вашего конкретного числа, вероятно, проще написать:
long bytes = (1L << 32);
Таким образом, тот, кто прочитает код, сможет быстро понять, что байт
- это ровно 2 в степени 32.