與龍

2009-06-18 34 views
6
assertEquals(new Long(42681241600) , new Long(42681241600)); 

的Java的JUnit的assertEquals我嘗試檢查兩個長的數字,但是當我嘗試編譯此我得到與龍

integer number too large: 42681241600 

錯誤。文檔顯示有一個Long,Long的assertEquals方法,但它沒有被調用。

回答

17

你想:

assertEquals(42681241600L, 42681241600L); 

您的代碼打電話的assertEquals(對象,對象)。您還需要在數字末尾附加'L'字符,以告知Java編譯器該數字應該編譯爲long而不是int。

7

42681241600被解釋爲一個int文字,它太大了。附加一個'L'使其成爲long文字。

如果你想獲得的所有的技術,你可以看一下§3.10.1 of the JLS

文字的整數long類型的,如果它與ASCII字母Ll(ELL)後綴;否則它是int(§4.2.1)。後綴L是首選,因爲字母l(ell)通常很難與數字1(一)區分開來。

2

在你的電話號碼的末尾添加一個 「L」,如:

new Long(42681241600L) 
在Java中

,每一個文字數被視爲一個整數。

0

你還應該考慮一般使用Long.valueOf,因爲這可能會允許一些優化:

Long val = Long.valueOf(1234L); 

J2SDK

公共靜態龍的valueOf(長L)

返回一個長實例,代表 指定的長整型值。如果不需要新的 龍實例,這 方法一般應在 優先使用構造 長(長),因爲這種方法很可能 通過緩存 經常請求的值,以產生顯著更好的空間 和時間性能。