繁体   English   中英

使用Long的Java JUnit assertEquals

[英]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字母Ll (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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM