據我所知的DOC,ParseDouble函數作出類似:Double.valueOf(String s)和Double.ParseDouble(String s)有什麼區別?
Double parseDouble(String s) throws ... {
return new Double(Double.valueOf(s));
}
據我所知的DOC,ParseDouble函數作出類似:Double.valueOf(String s)和Double.ParseDouble(String s)有什麼區別?
Double parseDouble(String s) throws ... {
return new Double(Double.valueOf(s));
}
的邏輯是相同的,但Double.valueOf的返回值()返回一個堆分配Double對象,其中,作爲parseDouble返回一個原語雙。您的代碼示例不完全正確。 java源文件如下:
public static double parseDouble(String s) throws NumberFormatException {
return FloatingDecimal.readJavaFormatString(s).doubleValue();
}
public static Double valueOf(String s) throws NumberFormatException {
return new Double(FloatingDecimal.readJavaFormatString(s).doubleValue());
}
valueOf返回一個double,parseDouble返回一個Double。使用適合您需求的任何一種。
在Java 6的情況正好相反:
Double valueOf(String s) throws ... { return new Double(Double.parseDouble(s)); }
parseDouble
返回double value
,返回的valueOf Double
類型的新object
。
我不認爲有任何說它有成爲*新*雙。 – 2010-09-14 13:06:20
取決於您想要雙倍還是雙倍。儘管使用自動裝箱,但這並不重要。如果你正在做的事情非常密集,那麼你想避免在需要雙打的地方使用雙打,以避免自動裝箱的開銷。但是,在實際上有任何改變之前,它需要非常非常非常密集。
但是,我仍然會主張根據所需的結果使用適當的一個。
是的。事實上,我只需要價值,所以我會使用雙重原語。 – oyo 2010-09-14 13:02:44
您是否有任何證據顯示自動裝箱會比明確調用'Double.valueOf(somePrimitiveDouble)'產生更多開銷?我幾乎可以保證它沒有額外的開銷。你想避免它的時間是另一個方向:當你調用'valueOf'時,它會給你一個Double,而你只需要一個原語。這將是毫無意義的開銷。 – 2010-09-14 13:08:55
簡單,
public static double parseDouble(String s) throws NumberFormatException
返回原始double
一個java,而
public static Double valueOf(String s) throws NumberFormatException
返回一個Double
一個包裹雙精度值。
thx,所以對於parseDouble(String s),當你只需要這個值,而不是所有附加的方法時,成本都會降低... – oyo 2010-09-14 12:52:52
是的,你是正確的 – 2010-09-14 15:00:47