2012-01-23 31 views
-2

任何人可以告訴我toLong()new Long(String)之間的區別嗎?兩者在性能上有差異嗎?任何問題,如果我使用toLong而不是新的Long()來轉換字符串長

例子:String str="1236";

Long val=str.toLong();

OR

Long val=new Long(str);

哪一個是更好的使用,給我的區別是什麼?

+5

在哪個版本的Java中,您會看到'String.toLong()'? – adarshr

+3

如果String.toLong()存在,它的javadoc會告訴你它做了什麼。但是這種方法不存在。見http://docs.oracle.com/javase/6/docs/api/java/lang/String.html –

+0

你的意思是Long.parseLong(String),對不對? –

回答

2

(我假設你在Groovy的意思,因爲Java字符串沒有toLong()方法...)

在幕後,同樣的代碼是使用,所以沒有區別。

如果你仍然好奇,但是,我會強烈建議寫一個快速的時間測試,以驗證自己。

0

使用Long.valueOf(...),因爲它緩存並重新使用128以下的值(我猜)。

0

沒有String#toLong()方法。

但是應該使用Long#valueOf(String)而不是new Long(String),因爲JVM可以緩存並重用該值。

+0

剛剛檢查過,似乎需要String參數的版本沒有使用緩存值... – quaylar

+0

哦,是的......我只是看看javadoc,它讓我懷疑你是對的。對'Integer'看起來是一樣的(沒有檢查其他)。那麼,今天學到了一些新東西。 Thx的提示! :) – hage

0

沒有String.toLong() - 但有Long.valueOf(String str),它與新的Long(String str)相同。