为什么要重写tostring()方法?
又为什么要重写hashcode()。什么时候重写这些方法

解决方案 »

  1.   

    没有一定要写toString().一般toString()方法会应用在自己bean类中。根据需要 在重写的toString 方法中 组织自己想要显示的当前对象的信息。比如按一定规则格式返回 所以属性的名称及值。
      

  2.   

    比如当某个对象和String相连的时候,有时候系统提供的toString不能满足要求,这个时候需要重写toString方法,来实现特定的功能,否则可能会打印引用地址之类的信息
      

  3.   

    我个人理解:重写toString是对对象打印输出的一种格式化。当你print一个对象是你需要这个对象在打印时展现的是什么形态你就把toString重写成你需要的返回形态。重写hashcode主要是为了规定对象之间的比较方式。如果你把对象存入hash集合,集合就会对对象的hashcode进行比较以区分两个对象是否是同一对象。
      

  4.   

    当进行输出操作,java会调用toString,当涉及到hash操作java会调用hashcode方法对返回值进行比较
      

  5.   

    我是新手,说的不算数哈。
            所有java的类的父类是java.lang,在这个类里面有一个tostring函数是用来显示一些关于这个对象的hashcode等相关信息,当你要显示一个对象的时候,系统会自动调用这个对象的tostring方法,而它显示的都是一些系统数据,例如hashcode。如果你想显示你想要的东西,那么就应该重写这个类,把这个函数给覆盖了,那么系统就会调用你写的tostring方法,可以显示你想要的方法
      

  6.   

    http://topic.csdn.net/u/20101219/21/f9b87142-6509-4f69-9acd-2bc66ec3a54e.html?20330这个帖子里的代码就是很好的例子。你看看。原理,就是重写咯。每个自定义类都 继承自Object类。Object类的toString 方法是获取对象在内存中的值。如果你的自定义类不需要这个信息,而是想要 如上面例子所要求的 打印各个对象的熟悉,这是就可以重写这个toString()方法实现自己要的格式。重写 是会默认调用子类的方法。
      

  7.   

    首先说toString()、hashcode()这2个方法不是一定要重写的,所以不存在为什么要重写这2个方法的说法。
    那什么时候需要重写这2个方法呢:
    一个类对象作为参数传入到System.out.println()中时会调用这个对象的toString()方法,如果没有重写toString()方法的话,调用的就是Object类的toString()方法,那么输出信息没有实际意义。还有在debug时候中也会用到这个方法,但作用不大。
    调用对象的equals()方法时会调用hashcode()这个方法,如果不重写hashcode()的话一般达不到想要的效果