3

我现在很困惑。

我有一个GregorianCalendar对象,我给出了一个具体的日期(2010 年 1 月 1 日)。

日历:

Calendar c = new GregorianCalendar();
c.set(2010, 0, 1);
System.out.println(c.getTime());
System.out.println(c.getTimeInMillis());

输出:

2010 年 1 月 1 日星期五 13:12:57 CET

1262347977927

现在,当我尝试创建一个long并将这个数字存储在其中时,这个数字实际上对于我的变量来说太大了。

存储在变量中:

long timeStamp = 1262347977927;
// ERROR: The literal 1262347977927 of type int is out of range

但是当我将结果直接存储到我的变量中时,它工作得很好。

直接存储:

long timeStamp = c.getTimeInMillis();
System.out.println(timeStamp);

输出:

1262348451631

为什么我长得太大而不能长,而不长得不能长?我很困惑。

如果有人想知道,我正在使用 Java 6 和 Eclipse Indigo。

编辑:感谢所有即时答案......我现在觉得很愚蠢:p

4

8 回答 8

7

您只需在文字后添加一个L :

long timeStamp = 1262347977927L;
于 2013-07-04T11:24:35.907 回答
6

始终参考文档Primitive Data Types

如果整数文字以字母Ll结尾,则它是long类型;否则它是int类型。建议您使用大写字母L,因为小写字母l很难与数字1区分开来。

于 2013-07-04T11:28:46.257 回答
5

您必须附加一个Ll

long timeStamp = 1262347977927L;

分配值的文字,否则编译器假定整数值

前者更可取,因为后者看起来像1

于 2013-07-04T11:25:14.613 回答
5

使用数字末尾的 L:

long timeStamp = 1262347977927L;

它将 Number 定义为 Long。

于 2013-07-04T11:25:38.747 回答
4

No1262347977927对于长数字(即 8 个字节)来说不够大。

让它像这样:

long timeStamp = 1262347977927L;

L 为长声明。

原因是在 Java 中默认情况下所有数字都被视为 int 类型,除非你把开关L放在最后。

或者简单:

long timeStamp = c.getTimeInMillis()
于 2013-07-04T11:25:10.133 回答
4

改变

long timeStamp = 1262347977927;

long timeStamp = 1262347977927L;

请注意,您需要在末尾添加后缀“L”(首选)或“l”(添加后缀会导致代码难以阅读;有一个与此相关的java 谜题条目)。

于 2013-07-04T11:25:38.603 回答
4

它不是告诉你 1262347977927 不能放入 long 中,而是告诉你它不能构造一个值为 1262347977927 的 int 常量,甚至在它尝试将它分配给 long 变量之前。请注意错误中从未提及 timeStamp:

int 类型的文字 1262347977927 超出范围

在数字后使用 L 将其标记为长常量,然后您可以毫无问题地分配它:

long timeStamp = 1262347977927L;
于 2013-07-04T11:26:15.133 回答
2

尝试在您的号码后附加“L”,同时将其分配给长变量。

于 2013-07-04T11:27:09.293 回答