Инициализировать длинный Java

Примитивные типы данных - 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?

Ответ 1

  • Вы должны добавить L: long i = 12345678910L;.
  • Да.

BTW: он не должен быть верхним регистром L, но в нижнем регистре несколько раз путают с 1:).

Ответ 2

  • Вам нужно добавить символ L в конец номера, чтобы Java распознал его как длинный.

    long i = 12345678910L;
    
  • Да.

См. Примитивные типы данных, в котором говорится: "Integer литерал имеет тип long, если он заканчивается буквой L или l, в противном случае это type int."

Ответ 3

Вам нужно добавить в верхнем регистре L в конец так:

long i = 12345678910L;

То же самое верно для float с 3.0f

Что должно отвечать на оба ваших вопроса.

Ответ 4

Чтобы инициализировать долго, вам нужно добавить "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.