Ответ 1
- Вы должны добавить
L
:long i = 12345678910L;
. - Да.
BTW: он не должен быть верхним регистром L, но в нижнем регистре несколько раз путают с 1
:).
Примитивные типы данных - oracle doc говорит, что диапазон 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
?
L
: long i = 12345678910L;
.BTW: он не должен быть верхним регистром L, но в нижнем регистре несколько раз путают с 1
:).
Вам нужно добавить символ L
в конец номера, чтобы Java распознал его как длинный.
long i = 12345678910L;
Да.
См. Примитивные типы данных, в котором говорится: "Integer литерал имеет тип long, если он заканчивается буквой L или l, в противном случае это type int."
Вам нужно добавить в верхнем регистре L
в конец так:
long i = 12345678910L;
То же самое верно для float с 3.0f
Что должно отвечать на оба ваших вопроса.
Чтобы инициализировать долго, вам нужно добавить "L" до конца.
Он может быть как в верхнем, так и в нижнем регистре.
Все числовые значения по умолчанию int
. Даже когда вы выполняете любую операцию byte
с любым целым числом, byte
сначала продвигается до int
, а затем выполняются любые операции.
Попробуйте это
byte a = 1; // declare a byte
a = a*2; // you will get error here
Вы получаете ошибку, потому что 2
по умолчанию int
.
Следовательно, вы пытаетесь умножить byte
на int
.
Следовательно, результат получает typpeded до int
, который не может быть привязан к byte
.