我们知道当打印对象的引用时,会默认调用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)
-
-
-
-
-