使用Long的Java JUnit assertEquals

Ham*_*aya 10 java junit long-integer

    assertEquals( new Long(42681241600) , new Long(42681241600) );
Run Code Online (Sandbox Code Playgroud)

我试着检查两个长号,但当我尝试编译这个我得到

    integer number too large: 42681241600   
Run Code Online (Sandbox Code Playgroud)

错误.文档显示有一个Long,Long assertEquals方法,但它没有被调用.

Agi*_*Jon 20

你要:

assertEquals(42681241600L, 42681241600L);
Run Code Online (Sandbox Code Playgroud)

您的代码调用了assertEquals(Object,Object).您还需要在数字的末尾附加"L"字符,以告诉Java编译器该编号应该编译为long而不是int.


Mic*_*ers 7

42681241600被解释为int文字,它太大了.附加一个'L'以使其成为long文字.

如果你想获得所有技术,你可以查看JLS的§3.10.1:

如果整数文字long后缀为ASCII字母Ll(ell),则为整数文字; 否则它是类型int (§4.2.1).后缀L是首选,因为字母l(ell)通常难以与数字1(一)区分开.


pau*_*lcm 5

您通常还应该考虑使用 Long.valueOf 因为这可能允许一些优化:

Long val = Long.valueOf(1234L);
Run Code Online (Sandbox Code Playgroud)

J2SDK

public static Long valueOf(long l)

返回表示指定 long 值的 Long 实例。如果不需要新的 Long 实例,则通常应优先使用此方法而不是构造函数 Long(long),因为此方法通过缓存频繁请求的值可能会产生明显更好的空间和时间性能。