2015-06-05 61 views
-2

我們可以調用Object類的toString()方法的字符串我們可以調用Object類的toString()方法的字符串

String string = new String("Hello"); 
System.out.println(string); 

爲一個字符串overrided方法被調用的串。是否有任何方法來調用Object類的toString()方法的字符串

我想打印出內存地址String對象

+0

我不確定你在問什麼。你可以添加更多關於你面臨的問題的細節嗎?你想達到什麼目的? – Pshemo

+1

@jiriS您將不得不使用System.identityHashCode(string)。 string.hashCode()將使用hashCode()的覆蓋。 – Taemyr

+0

'Object.toString()'輸出散列碼,它可能與地址有關,也可能不相關。 –

回答

3

不,您不能調用重寫的方法。但是,你可以模仿ObjecttoString()的輸出(基本上只使用哈希碼)如下:

string.getClass().getName() + "@" + Integer.toHexString(string.hashCode()) 

*編輯:正如評論注意到了Taemyr,更加緊密的模仿,這不使用由String定義的hashCode,將是:

string.getClass().getName() + "@" + Integer.toHexString(System.identityHashCode(string)) 
+2

但是'hashCode()'在這種情況下也被覆蓋了。所以它不會幫助我猜... – Codebender

+4

使用System.identityHashCode(string)來代替? – Taemyr

+0

@AbishekManoharan很好,'String'不會重寫'hashCode()' - 但即使Object的'toString()'方法被直接調用,它也會使用子類的'hashCode()'實現。因爲我希望OP不依賴於特定的'hashCode()'結果,所以輸出應該足夠接近。 –

1

都能跟得上。爲什麼?..哦,因爲這方法覆蓋,因此,基於對象類型,在運行時,從String類中的方法是總是稱爲

0

不,你不能,一旦一個子類覆蓋父母的成員(函數或變量),你無法實現他們從外面那個班級。這是封裝和繼承的全部原則(子類具有與父代不同的行爲)。

相關問題