2013-10-27 53 views
2

在Java中,我的理解是每個類都從Object繼承。但是,如果我把下面的代碼,它不太願意:爲什麼我不能在double值上調用toString()?

Math.PI.toString() 

它給人的錯誤:「靜態錯誤:在雙號方法名稱‘的toString’」

這是否意味着翻番不繼承目的?那麼,雙倍是什麼?

+2

點評:這款確實在C#中工作。 – PMF

+1

@PMF我正要做出同樣的評論。它也適用於其他一些JVM語言,如Scala。 – arshajii

+1

[看起來像double型變量沒有方法。有什麼錯誤的Java或NetBeans?](http://stackoverflow.com/questions/4557900/looks-like-double-type-variables-have-no-methods-something-wrong-with-java-or-n) –

回答

4

Math.PIdouble而double是原始類型,這意味着它沒有任何方法。如果它是Double那麼你可以調用它的toString方法,但我沒有看到任何理由。

如果你想創建雙重用途的字符串表示

String value = String.valueOf(Math.PI); 

String value = Double.toString(Math.PI) 

BTW String.valueOf(d)返回結果的Double.toString(d)

5

Does this mean that double does not inherit from Object ?

是的。

So what is double then?

這是一種內置於語言本身的原始類型。還有其他原始類型,如char,0 short,int,float,boolean

雖然,漢語是提供圍繞每個原始類型的內置包裝,從Object延伸 - IntegerCharacterShortDouble
您可以使用Double.toString(double)方法來獲取字符串表示。

3

沒有,Math.PI是雙(原始的,不是雙(對象),所以它不會從Object

3

這是因爲double是一種原始的繼承,不從Object繼承和不有它的行爲。你仍然可以調用toString()Double這又是一個對象。
瞭解更多關於Java的原語和對象。This可能是有用的。

2

double不是對象,而是一種原始的。因此,沒有Object的方法,如toString()

有一個對象版本的雙Double這是圍繞double對象包裝。

你可以通過調用Double myDouble = Double.valueOf(primative);

Double也有靜態輔助方法常用操作上primvatives如toString

調用Double.toString(Math.PI);創建雙可能是你想要什麼

1

double是基本類型,但可以使用Java Double類來提供幫助。

這應該做你需要的東西:

Double.toString(Math.PI) 
相關問題