Попробуй так:
counter = 1111111111111111l;
Обратите внимание, что последним символом является буква «L» (строчная, конечно), а не номер один. Вот более понятный пример:
counter = 2222222222222222L;
Как уже отмечали другие, заглавная буква "L" также работает и гораздо более понятна. Все целочисленные литералы в Java интерпретируются как ints
, если только вы не добавили к ним суффикс 'L' (или 'l'), чтобы сказать компилятору интерпретировать его как long
.
Аналогичная ситуация происходит с литеральными числами с плавающей точкой, которые по умолчанию интерпретируются как doubles
, если только вы не добавите к суффиксу символ 'f', чтобы сказать компилятору интерпретировать его как float
. Как в:
double num1 = 1.0; //1.0 is treated as a literal double
float num2 = 1.0; //1.0 is still treated as a literal double; the compiler may complain about loss of precision
float num3 = 1.0f; //1.0 is treated as a float, and the compiler is happy