Почему я не могу присвоить 'длинному' значение 4 миллиардов?

Я пытаюсь объявить длинное значение в Java, который, к сожалению, не работает.

Это - мой код. Это приводит к следующему сообщению об ошибке: "Литеральный 4294967296 из интервала типа вне диапазона".

long bytes = 4294967296;

Мне нужно это значение, чтобы заставить файл отфильтровать, который отфильтровывает файлы, которые больше, чем 4294967296 байтов (4 ГБ). Наоборот работает без любых проблем (long size = file.length()) с каждым размером файла, который является, почему я не могу выяснить, почему мое объявление не работает.

34
задан matt5784 28 June 2013 в 18:42
поделиться

5 ответов

Добавьте L в конец числа:

long bytes = 4294967296L;
74
ответ дан 27 November 2019 в 15:51
поделиться

Чтобы ответить на заголовок вашего вопроса, максимальное значение long можно получить с помощью константы:

Long.MAX_VALUE

Чтобы решить вашу проблему, добавьте литерал l ( L ) после номер.

28
ответ дан 27 November 2019 в 15:51
поделиться

попробуйте long bytes = 4294967296L; , чтобы указать компилятору, что вы используете long .

18
ответ дан 27 November 2019 в 15:51
поделиться

Суфиана права. Вот документ, который показывает, как объявлять литералы различных типов чисел в Java:

http://www.janeg.ca/scjp/lang/literals.html

2
ответ дан 27 November 2019 в 15:51
поделиться

длинные литералы сопровождаются буквой L или l (см.: JLS 3.10.1). Прописные буквы лучше, потому что они более разборчивы, а строчные л слишком похожи на 1.

Для вашего конкретного числа, вероятно, проще написать:

 long bytes = (1L << 32);

Таким образом, тот, кто прочитает код, сможет быстро понять, что байт - это ровно 2 в степени 32.

19
ответ дан 27 November 2019 в 15:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: