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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

为什么看见很多视频和书本里面在定义了一个类之后:都会说要覆写toString方法呢?
就是public String toString(){代码}这个方法?写和不写有什么区别呢?
String类中不是实现了public String toString(){代码}这个方法的吗?

11 个回复

倒序浏览
本帖最后由 lyqinyan 于 2012-4-7 21:19 编辑

如果我们把对象加入到左边listbox中显示,显示时默认字符串表示,而对象的字符串表示就是调用对象的toString方法。而默认的toString方法是从Object类继承下来的,显示对象名称。所以如果要达到预定的目的就需要覆写toString的方法。
回复 使用道具 举报
每次在打印输出一个类的对象的时候都会自动调用toString() 方法, 如果你对想要打印的对象有什么输出
要求,那就只能覆写一个toString() 方法
回复 使用道具 举报
当你打印一个类对象时,该对象会调用public String toString()方法。如果不覆写该方法 就调用Object类的toString方法,固定的返回:类名称+ '@' + 类的哈希值。如果我们不想调用toString方法时只打印这些信息,我们就要覆写该方法了,覆盖父类的方法,执行我们自己想要的代码。
回复 使用道具 举报
当你打印一个类对象时,该对象会调用public String toString()方法。如果不覆写该方法 就调用Object类的toString方法,固定的返回:类名称+ '@' + 类的哈希值。如果我们不想调用toString方法时只打印这些信息,我们就要覆写该方法了,覆盖父类的方法,执行我们自己想要的代码。
回复 使用道具 举报
重写toString方法是根据我们的需要去重写的。。就像上面所说的字符串。。当我们打印字符串时我们希望打印的是字符串的内容而不是地址。。那么我们就需要重写Object类中的方法。。。。因为Object类中的toString方法打印的是类型@对象地址的形式。。。而且当我们打印一个对象的时候都会自动去调用toString方法。。。
回复 使用道具 举报
如果不覆写默认继承Object类的toString方法
  public String toString() {
        return getClass().getName() + "@" + Integer.toHexString(hashCode());
    }打印哈希值。
通常打印哈希值不能满足开发的需求,要自己编写类的toString方法以满足具体需求。
回复 使用道具 举报
java里提供的toString是默认的,它只是单纯的字符串输出,如果对字符串输出要有自己的定义,这时候就需要复写toString方法了.
回复 使用道具 举报
如果不覆写默认继承Object类的toString方法
  public String toString() {
        return getClass().getName() + "@" + Integer.toHexString(hashCode());
    }打印哈希值。
如果对字符串输出要有自己的定义,这时候就需要复写toString方法了.。
回复 使用道具 举报
这个方法是所有对象的方法,因为它是Object里的方法,因为所有的类都继承Object  ,而所有类都继承Object,所以所有对象都有这个方法.总而言之:它只是sun公司开发java的时候为了方便所有类的字符串操作而特意加入的一个方法,写这个方法的用途就是为了方便操作.
回复 使用道具 举报
    系统默认提供的toString方法很多时候不能满足人机交互的需求,比如说输出格式方面的要求,视频中重写
toString方法的时候,会经常加一些让我们看起来更容易理解的东西,如果交给系统去做,那就太死板了,
还是人有足够的灵活性啊
回复 使用道具 举报
pray 高级黑马 2014-4-26 04:37:06
12#
初来乍到,请多多关照。。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马