我們知道當打印對象的引用時,會默認調用Object類的toString()方法,返回的是一個字符串表示,該字符串的形式爲類名+@+十六進制的哈希值;爲什麼String打印的不是這樣一個地址值呢?因爲String類繼承自Object類,重寫了從Object類拿到的toString()方法,返回的是該該對象本身,即字符串。詳見下面API中Object的toString()方法和String類的toString()方法:
API中Object類的toString()方法:
public String toString()
- 返回該對象的字符串表示。通常,
toString
方法會返回一個“以文本方式表示”此對象的字符串。結果應是一個簡明但易於讀懂的信息表達式。建議所有子類都重寫此方法。 -
Object
類的toString
方法返回一個字符串,該字符串由類名(對象是該類的一個實例)、at 標記符“@
”和此對象哈希碼的無符號十六進制表示組成。換句話說,該方法返回一個字符串,它的值等於:getClass().getName() + '@' + Integer.toHexString(hashCode())
-
- 返回:
- 該對象的字符串表示形式。
API中String類的toString()方法:
toString
public String toString()
- 返回此對象本身(它已經是一個字符串!)。
-
- 指定者:
- 接口
CharSequence
中的toString
- 覆蓋:
- 類
Object
中的toString
-
- 返回:
字符串本身。
Object類的equals()方法,默認是比較對象的地址值,一般使用時會重寫該方法,用來比較對象的屬性值。
String類繼承Object類的equals()方法,並重寫了該方法,比較的是字符串的內容。詳見API:
public boolean equals(Object anObject)
- 將此字符串與指定的對象比較。當且僅當該參數不爲
null
,並且是與此對象表示相同字符序列的String
對象時,結果才爲true
。 -
- 參數:
anObject
- 與此String
進行比較的對象。- 返回:
- 如果給定對象表示的
String
與此String
相等,則返回true
;否則返回false
。 - 另請參見:
compareTo(String)
,equalsIgnoreCase(String)