为什么打印String对象,不是地址值?,string对象
分享于 点击 18461 次 点评:248
为什么打印String对象,不是地址值?,string对象
我们知道当打印对象的引用时,会默认调用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
。 -
- 覆盖:
- 类
Object
中的equals
-
- 参数:
anObject
- 与此String
进行比较的对象。- 返回:
- 如果给定对象表示的
String
与此String
相等,则返回true
;否则返回false
。 - 另请参见:
compareTo(String)
,equalsIgnoreCase(String)
相关文章
- 暂无相关文章
用户点评