assertEquals( new Long(42681241600) , new Long(42681241600) );
私は2つの長い数字をチェックしようとしていますが、これをコンパイルしようとすると、
integer number too large: 42681241600
エラー。ドキュメントには、Long、Long assertEqualsメソッドがあることが示されていますが、呼び出されていません。
assertEquals( new Long(42681241600) , new Long(42681241600) );
私は2つの長い数字をチェックしようとしていますが、これをコンパイルしようとすると、
integer number too large: 42681241600
エラー。ドキュメントには、Long、Long assertEqualsメソッドがあることが示されていますが、呼び出されていません。
あなたが欲しい:
assertEquals(42681241600L, 42681241600L);
あなたのコードはassertEquals(Object、Object)を呼び出していました。また、数値の最後に「L」文字を追加して、数値をintではなくlongとしてコンパイルする必要があることをJavaコンパイラに通知する必要がありました。
42681241600はint
リテラルとして解釈されますが、大きすぎて大きすぎます。'L'を追加してlong
リテラルにします。
すべての技術を取得したい場合は、JLSの§3.10.1を調べることができます:
整数リテラルは
long
、ASCII文字L
またはl
(ell)の接尾辞が付いている場合はタイプです。それ以外の場合はタイプint
(§4.2.1)です。文字(ell)は数字(1)と区別するのが難しいことが多いため、接尾辞L
が推奨されます。l
1
通常は、Long.valueOf を使用することも検討する必要があります。これにより、最適化が可能になる可能性があるためです。
Long val = Long.valueOf(1234L);
J2SDKから:
public static Long valueOf(long l)
指定された long 値を表す Long インスタンスを返します。新しい Long インスタンスが必要ない場合は、コンストラクター Long(long) よりもこのメソッドを使用する必要があります。このメソッドは、頻繁に要求される値をキャッシュすることにより、空間と時間のパフォーマンスが大幅に向上する可能性が高いためです。
次のように、番号の最後に「L」を追加します。
new Long(42681241600L)
Javaでは、すべてのリテラル数は整数として扱われます。