Примитивные типы данных - оракул док говорит, что диапазон long
в Java -9,223,372,036,854,775,808
для 9,223,372,036,854,775,807
. Но когда я делаю что-то подобное в моем затмении
long i = 12345678910;
это показывает мне " The literal 12345678910 of type int is out of range
" ошибку.
Есть 2 вопроса.
1) Как мне инициализировать long
значение 12345678910
?
2) Все ли числовые литералы по умолчанию типа int
?
java
long-integer
aamadmi
источник
источник
Long
- из-за автобокса , вы можете использоватьLong i = 12345678910L
, или использоватьLong i = Long.valueOf(12345678910L)
в тех случаях, когда вы не можете использовать автобокс.Ответы:
L
:long i = 12345678910L;
.Кстати, это не обязательно должен быть верхний регистр L, но нижний регистр
1
часто путают :).источник
0x200000000L
0x20000000L
?0x20000000L
будет работать, но все еще может быть представленint
(32-разрядное целое число), поэтому0x20000000
будет работать так же хорошо.0x200000000L
ломает эту границу, что делает следL
необходимым.Вам нужно добавить
L
символ в конец числа, чтобы Java распознала его как длинный.Да.
См. Примитивные типы данных, в которых говорится: «Целочисленный литерал имеет тип long, если он заканчивается буквой L или l; в противном случае он имеет тип int».
источник
Вам нужно добавить заглавные буквы
L
в конце, такТо же самое относится и к поплавку с
3.0f
Который должен ответить на оба ваших вопроса
источник
Для инициализации long вам нужно добавить "L" в конец.
Это может быть как прописная, так и строчная буквы.
Все числовые значения по умолчанию
int
. Даже когда вы выполняете какую-либо операциюbyte
с любым целым числом,byte
сначала выполняется повышение,int
а затем выполняются любые операции.Попробуй это
Вы получаете ошибку, потому что
2
по умолчаниюint
.Следовательно, вы пытаетесь размножаться
byte
сint
. Следовательно, результат получает типизированное значение,int
которому нельзя присвоить обратноbyte
.источник