[英]Java JUnit assertEquals with Long
assertEquals( new Long(42681241600) , new Long(42681241600) );
我试着检查两个长号,但当我尝试编译这个我得到
integer number too large: 42681241600
错误。 文档显示有一个Long,Long assertEquals方法,但它没有被调用。
你要:
assertEquals(42681241600L, 42681241600L);
您的代码调用了assertEquals(Object,Object)。 您还需要在数字的末尾附加“L”字符,以告诉Java编译器该编号应该编译为long而不是int。
42681241600被解释为一个int
文字,它太大了。 附加一个'L'以使其成为一个long
文字。
如果你想获得所有技术,你可以查看JLS的§3.10.1 :
如果整数文字后缀为ASCII字母
L
或l
(ell),则整数文字的长度为long
; 否则它的类型为int
(§4.2.1) 。 后缀L
是优选的,因为字母l
(ell)通常难以与数字1
(一)区分开。
在您的号码末尾添加“L”,如:
new Long(42681241600L)
在Java中,每个文字数都被视为整数。
您通常也应该考虑使用Long.valueOf,因为这可能允许一些优化:
Long val = Long.valueOf(1234L);
来自J2SDK :
public static Long valueOf(long l)
返回表示指定long值的Long实例。 如果不需要新的Long实例,则通常应优先使用此方法,而不是构造函数Long(long),因为此方法可能通过缓存频繁请求的值来显着提高空间和时间性能。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.