任何人都可以告诉我为什么我不能这样声明数组?
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是数字whitch编译器有问题。
有什么想法吗?
提前致谢
答案 0 :(得分:25)
普通数在java中被视为int
。追加大于L
的{{1}}来转换Integer.MAX_VALUE
。
long
根据docs
如果整数文字后缀为ASCII,则其类型为
long[] powers = {..., 2863245995L, 11453115051L, ...};
字母L或l(ell);否则它是long
类型。后缀L是首选,因为字母l(ell)通常很难 区别于数字1(一)。
答案 1 :(得分:4)
你尝试过这样的事吗?
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};