assertEquals( new Long(42681241600) , new Long(42681241600) );
我试着检查两个长号,但是当我尝试编译这个时,我得到了
integer number too large: 42681241600
错误。文档显示有一个Long,Long assertEquals方法,但它没有被调用。
答案 0 :(得分:20)
你想:
assertEquals(42681241600L, 42681241600L);
您的代码正在调用assertEquals(Object,Object)。您还需要在数字的末尾附加“L”字符,以告诉Java编译器该编号应该编译为long而不是int。
答案 1 :(得分:7)
42681241600被解释为int
字面值,它太大了。附加一个“L”使其成为long
字面值。
如果您想获得所有技术支持,可以查看§3.10.1 of the JLS:
如果整数文字的后缀为ASCII字母
long
或L
(ell),则其类型为l
;否则它是int
(§4.2.1)类型。后缀L
是首选,因为字母l
(ell)通常很难与数字1
(一)区分开来。
答案 2 :(得分:2)
在您的号码末尾添加“L”,例如:
new Long(42681241600L)
在Java中,每个文字数都被视为一个整数。
答案 3 :(得分:2)
您通常也应该考虑使用Long.valueOf,因为这可能会允许一些优化:
Long val = Long.valueOf(1234L);
来自J2SDK:
public static Long valueOf(long l)
返回表示的Long实例 指定的长值。如果是新的 这不需要长实例 方法一般应该用于 对构造函数的偏好 很长(很长),因为这种方法很可能 产生明显更好的空间 和缓存的时间表现 经常要求的价值观。