Объявление long [] массива в java
Может ли кто-нибудь сказать мне, почему я не могу объявить массив таким образом?
long[] powers = { 0, 0, 1, 7, 35, 155, 651, 2667, 10795, 43435,
174251, 698027, 2794155, 11180715, 44731051, 178940587,
715795115, 2863245995, 11453115051, 45812722347, 183251413675,
733006703275, 2932028910251, 11728119835307, 46912487729835,
187649967696555, 750599904340651, 3002399684471467};
Компилятор говорит, что литерал типа int находится вне диапазона. Я также пытался сделать это так долго
long[] powers = { 0, 0, 1, 7, 35, 155, 651, 2667, 10795, 43435,
174251, 698027, 2794155, 11180715, 44731051, 178940587,
715795115, (long)2863245995, (long)11453115051, (long)45812722347, etc ...
но ничего не изменилось и попробовал подобное: Long.valueOf(x)
, где x - это компилятор с числовым значением, с которым связана проблема.
Любые идеи?
Заранее спасибо
Ответы
Ответ 1
Обычное число считается int
в java. Добавьте L
, которые больше, чем Integer.MAX_VALUE
, чтобы преобразовать long
.
long[] powers = {..., 2863245995L, 11453115051L, ...};
Согласно docs
Integer литерал имеет тип long
, если он суффикс с ASCII буква L или l (ell); в противном случае он имеет тип int
.
Суффикс L является предпочтительным, поскольку букву l (ell) часто трудно отличить от цифры 1 (один).
Ответ 2
Вы пробовали что-то вроде этого?
long[] powers = { 0, 0, 1, 7, 35, 155, 651, 2667, 10795, 43435,
174251, 698027, 2794155, 11180715, 44731051, 178940587,
715795115L, 2863245995L, 11453115051L, 45812722347L, 183251413675L,
733006703275L, 2932028910251L, 11728119835307L, 46912487729835L,
187649967696555L, 750599904340651L, 3002399684471467L};