2013-11-24 3 views
10

Может ли кто-нибудь сказать мне, почему я не могу объявить массив таким образом?Объявление длинного [] массива в 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) где х число компилятора ведьма проблемы с.

Любые идеи?

Заранее спасибо

+3

Добавить L на свои номера. I.e: 2863245995L и так далее. –

+0

Спасибо, что вы прекрасно работаете. – Yetti

+0

Ключевым принципом является то, что тип и значение выражения Java не зависят от того, как он используется. 11453115051 является сверхбольшим int literal независимо от последующего литья или в длинном [] инициализаторе. –

ответ

23

Plain номер считается int в Java. Добавить L, которые больше Integer.MAX_VALUE, чтобы преобразовать long.

long[] powers = {..., 2863245995L, 11453115051L, ...}; 

Согласно docs

целое число буквальным имеет тип long, если он имеет суффикс с ASCII буквой L или L (ELL); в противном случае это тип int.

Суффикс L является предпочтительным, поскольку буква l (ell) часто бывает трудно определить , отличающуюся от цифры 1 (одна).

+0

Спасибо, что помогли. – Yetti

+0

@Yetti, добро пожаловать – Masudul

+0

@Yetti Вы, кажется, здесь новые. Не забудьте принять ответ, если он помог вам и решил вашу проблему. –

3

Вы пробовали что-то вроде этого?

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}; 
Смежные вопросы