我試圖找到,但似乎都是模糊的。 我需要將Object o轉換爲Double。 正確的方法首先轉換爲字符串? 謝謝。Java正確的方式轉換/投出對象爲Double
回答
如果對象不是Double,則不能將對象投射到Double
。
查看API。
特別注意
valueOf(double d);
和
valueOf(String s);
這些方法讓你從一個字符串或雙原始得到一個Double
實例的方式。 (也不是構造函數;請閱讀文檔以瞭解它們的工作原理)您嘗試自然轉換的對象必須爲您提供可以轉換爲double的對象。
最後,請記住,Double
實例是不可變的 - 一旦創建,您將無法更改它們。
new Double(object.toString());
但是,對於我來說,你似乎很奇怪你要從一個對象變成一個對象。在嘗試進行轉換之前,您應該更好地瞭解要開始的對象類別。您可能會遇到一些代碼質量問題。
請注意,這是一個轉換,而不是轉換。
如果object爲null,則會拋出nullpointerexception。 –
Double.valueOf(object.toString())使用較少的內存 – Loolooii
您可以使用instanceof運算符在轉換之前測試它是否爲double。然後你可以安全地將它轉換爲雙精度。另外,您可以根據其他已知類型(例如Integer)對其進行測試,然後根據需要將它們強制手動雙擊。
Double d = null;
if (obj instanceof Double) {
d = (Double) obj;
}
在Java之前的版本1.7,你可以不投對象基本類型
double d = (double) obj;
你可以施放對象爲Double就好
Double d = (Double) obj;
當心,它可以拋出一個如果對象不是Double,則爲ClassCastException
另外值得一提的是,如果您被迫使用1.5之前的舊Java版本,並且您正嘗試使用集合,則無法使用Double
等類型對集合進行參數化。
您必須手動「箱」到類Double
通過解析和鑄造,做這樣的事情增加新的項目,以及「拆箱」的原始double
時:
LinkedList lameOldList = new LinkedList();
lameOldList.add(new Double(1.2));
lameOldList.add(new Double(3.4));
lameOldList.add(new Double(5.6));
double total = 0.0;
for (int i = 0, len = lameOldList.size(); i < len; i++) {
total += Double.valueOf((Double)lameOldList.get(i));
}
老學校名單將只包含類型Object
,所以必須投到Double
。
此外,您將無法在Java早期版本中使用增強型for循環遍歷列表 - 只能使用for-loop。
您的意思是「1.5之前」?這就是泛型和自動裝箱的介紹。還是你的意思是別的? –
哎呀你是正確的@AlexeyRomanov,我編輯了我的答案來反映這一點。 –
如果您的對象表示一個數字,例如Integer,則可以將其轉換爲數字,然後調用doubleValue()方法。
Double asDouble(Object o) {
Double val = null;
if (o instanceof Number) {
val = ((Number) o).doubleValue();
}
return val;
}
試過所有這些方法轉換 - >
public static void main(String[] args) {
Object myObj = 10.101;
System.out.println("Cast to Double: "+((Double)myObj)+10.99); //concates
Double d1 = new Double(myObj.toString());
System.out.println("new Object String - Cast to Double: "+(d1+10.99)); //works
double d3 = (double) myObj;
System.out.println("new Object - Cast to Double: "+(d3+10.99)); //works
double d4 = Double.valueOf((Double)myObj);
System.out.println("Double.valueOf(): "+(d4+10.99)); //works
double d5 = ((Number) myObj).doubleValue();
System.out.println("Cast to Number and call doubleValue(): "+(d5+10.99)); //works
double d2= Double.parseDouble((String) myObj);
System.out.println("Cast to String to cast to Double: "+(d2+10)); //works
}
- 1. doubleValue不會將對象始終正確地轉換爲double值
- 2. 無法正確地將JSON對象轉換爲Java對象
- 3. 轉換值對象爲正確的RegistryValueKind
- 4. Java「的」轉換爲double
- 5. 如何正確調用轉換爲Double方法的字符串?
- 6. 如何將對象轉換爲java中的double類型數組?
- 7. 通過HTTP序列化正確的方式來轉換對象。
- 8. 將C++ double *轉換爲Java double
- 9. Java錯誤:double無法轉換爲double []
- 10. 將double轉換爲int(java)
- 11. 如何將對象列表轉換爲正確的JSON格式?
- 12. 如何從Jama Matrix對象轉換爲double [] [] - Java
- 13. 在C#中將對象{double [,]}轉換爲double [,]或int [,] .net
- 14. java轉換爲json對象
- 15. 如何將double轉換爲Java中精確的小數部分?
- 16. 精確地將double轉換爲mpf_class
- 17. ObjectInputStream不能正確轉換對象
- 18. java對象轉換
- 19. 根據對象實例類型轉換的正確方法
- 20. 將URL轉換爲正確的格式
- 21. 轉換爲正確的XML格式
- 22. 對象在wpf中轉換轉換後不能正確旋轉?
- 23. 在java中將Object []轉換爲double []
- 24. Java:直接將ByteBuffer轉換爲double []
- 25. Java中如何將double轉換爲int?
- 26. JNI將Java double轉換爲jdouble問題
- 27. Java:將double轉換爲字符串
- 28. 將字符串轉換爲double(java/android)
- 29. 將python轉換爲java float vs double
- 30. 爲什麼java將double轉換爲指數形式
什麼是特殊類型的對象?它實際上是一個Double,還是其他的? – nos
什麼是對象?它是一個未知的類或已經鍵入到Object的Double類。 – Rontologist
「我試圖找到,但都顯得模糊。」 - 你的問題太模糊,無法得到明顯的答案。請詳細說明。什麼是'對象o',意圖是什麼? – Saket