我們可以調用Object類的toString()方法的字符串我們可以調用Object類的toString()方法的字符串
String string = new String("Hello");
System.out.println(string);
爲一個字符串overrided方法被調用的串。是否有任何方法來調用Object類的toString()方法的字符串
我想打印出內存地址String對象
我們可以調用Object類的toString()方法的字符串我們可以調用Object類的toString()方法的字符串
String string = new String("Hello");
System.out.println(string);
爲一個字符串overrided方法被調用的串。是否有任何方法來調用Object類的toString()方法的字符串
我想打印出內存地址String對象
不,您不能調用重寫的方法。但是,你可以模仿Object
的toString()
的輸出(基本上只使用哈希碼)如下:
string.getClass().getName() + "@" + Integer.toHexString(string.hashCode())
*編輯:正如評論注意到了Taemyr,更加緊密的模仿,這不使用由String
定義的hashCode
,將是:
string.getClass().getName() + "@" + Integer.toHexString(System.identityHashCode(string))
但是'hashCode()'在這種情況下也被覆蓋了。所以它不會幫助我猜... – Codebender
使用System.identityHashCode(string)來代替? – Taemyr
@AbishekManoharan很好,'String'不會重寫'hashCode()' - 但即使Object的'toString()'方法被直接調用,它也會使用子類的'hashCode()'實現。因爲我希望OP不依賴於特定的'hashCode()'結果,所以輸出應該足夠接近。 –
都能跟得上。爲什麼?..哦,因爲這方法覆蓋,因此,基於對象類型,在運行時,從String
類中的方法是總是稱爲
不,你不能,一旦一個子類覆蓋父母的成員(函數或變量),你無法實現他們從外面那個班級。這是封裝和繼承的全部原則(子類具有與父代不同的行爲)。
我不確定你在問什麼。你可以添加更多關於你面臨的問題的細節嗎?你想達到什麼目的? – Pshemo
@jiriS您將不得不使用System.identityHashCode(string)。 string.hashCode()將使用hashCode()的覆蓋。 – Taemyr
'Object.toString()'輸出散列碼,它可能與地址有關,也可能不相關。 –