Инициализировать длинный в 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?

4 168

4 ответа:

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

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

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

    long i = 12345678910L;
    
  2. да.

посмотреть Примитивные Типы Данных который говорит "целочисленный литерал имеет тип long, если он заканчивается буквой L или L; в противном случае он имеет тип int."

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

long i = 12345678910L;

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

, который должен ответить на ваши вопросы

для инициализации long вам нужно добавить "L" до конца.
Он может быть прописным или строчным.

все числовые значения по умолчанию int. Даже когда вы делаете любую операцию byte С любым целым числом,byte сначала повышается до int и затем любой операции.

попробуй такое

byte a = 1; // declare a byte
a = a*2; //  you will get error here

вы получаете ошибку, потому что 2 по умолчанию int.
Поэтому вы пытаетесь размножаться byte С int. Следовательно, получает typecasted к int который не может быть назначен обратно byte.