A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 郭孟涛 高级黑马   /  2013-2-15 23:29  /  995 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 郭孟涛 于 2013-2-15 23:33 编辑

当打印一个对象名的时候,发现会得到这个对象的内存地址:例如:
System.out.println(new Demo());
结果是:Demo@8c436b
格式为:类名+@+内存地址


这个结果是怎么来的呢?这是object的基类中的toString() 方法管着的。每次输出对象名字时候,就自动执行toString() ,然后执行toString() 方法中的设置的结果。
toString() 虽然不是object的构造方法,但是它还是在输出类名的时候,被设置自动运行了。
这个自动运行的特别功能是很方便的,所以有些时候,我们可以重写它,比如测试程序输出结果的时候。


我们可以复写此方法,例如:把“@”符合改为“# 。同样也可以任意在里面写其它代码。

重要的还是利用他在输出对象名的时候,自动执行的功能。

不过我也在想既然这样为何不用类构造方法呢?都会自动执行?
因为:构造函数只有一个,多一个这样类似功能的时候,当我们需要多个自动执行的函数的时候,就可以也把toString()拿过来。


-------------------------------------------华丽的分割线-------------------------------------------

toStringpublic String toString()返回该对象的字符串表示。通常,toString 方法会返回一个“以文本方式表示”此对象的字符串。结果应是一个简明但易于读懂的信息表达式。建议所有子类都重写此方法。
Object 类的 toString 方法返回一个字符串,该字符串由类名(对象是该类的一个实例)、at 标记符“@”和此对象哈希码的无符号十六进制表示组成。换句话说,该方法返回一个字符串,它的值等于:

getClass().getName() + '@' + Integer.toHexString(hashCode())
返回:
该对象的字符串表示形式。

这个方法在打印对象时会被自动使用,一般情况下,都需要我们覆写此方法



评分

参与人数 1黑马币 +12 收起 理由
李培根 + 12 赞一个!

查看全部评分

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马