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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 刘经鹏 中级黑马   /  2012-12-28 09:32  /  1908 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 刘经鹏 于 2012-12-29 09:58 编辑

package cn.itcast.day1;
import java.util.Date;
public class ReflectPoint {
private Date birthday = new Date();

private int x;
public int y;
public String str1 = "ball";
public String str2 = "basketball";
public String str3 = "itcast";

public ReflectPoint(int x, int y) {
  super();
  this.x = x;
  this.y = y;
}


@Override
public int hashCode() {
  final int prime = 31;
  int result = 1;
  result = prime * result + x;
  result = prime * result + y;
  return result;
}

@Override
public boolean equals(Object obj) {
  if (this == obj)
   return true;
  if (obj == null)
   return false;
  if (getClass() != obj.getClass())
   return false;
  final ReflectPoint other = (ReflectPoint) obj;
  if (x != other.x)
   return false;
  if (y != other.y)
   return false;
  return true;
}

@Override//为什么要加上 @Override,还有已经是String类型为什么还要定义toString方法啊?
public String toString(){
  return str1 + ":" + str2 + ":" + str3;
}

public int getX() {
  return x;
}

public void setX(int x) {
  this.x = x;
}

public int getY() {
  return y;
}

public void setY(int y) {
  this.y = y;
}

public Date getBirthday() {
  return birthday;
}

public void setBirthday(Date birthday) {
  this.birthday = birthday;
}

}
求解:红色字体部分。

6 个回复

倒序浏览
toString
public String toString()返回此对象本身(它已经是一个字符串!)。
返回:
字符串本身。

如果想要输出 自己想要的结果就必须重写toString() 方法.
回复 使用道具 举报
因为上帝Object里的toString方法返回的是对象本身的字符串表现形式,
所以如果要定义自己的字符串表现形式就要重写toString方法。
回复 使用道具 举报
不一定要重写,有自己的需要才重写。
为什么重写先弄明白它们的用途,equals是为了比较是否相等。
比如你有两个User,现在某个软件的要求是只要它们id属性相同就是相等的,那就可以重写eqauls,只对id进行对比。
toString是为了让你更容易看懂一个对象,当对象在控制台打印出来时你想看到一堆无意义的代码吗?那就是调用默认的toString的结果。你可以重写自己想要的输出,看到对象的每个属性。
hashCode是hash集合中用来对比是否相等的根据,是一个根据对象内容算出来的数值,对比起来比equals快得多。更具体的解释你自己百度搜吧,很多东西要深入认识也不是几句话就能说明白的。
回复 使用道具 举报
@Override 这是注解的中的一个,jdk1.5的新特性,它是为了开发者在重新父类中的方法,避免错误,而规范的一种方式,告诉开发工具一些信息!如果你覆写父类的方法正确,你也可以不用写这些东西,它其实就是一种标记,除了防止你的书写错误,没有其他的什么用途!
回复 使用道具 举报
@Override 注解,表示重写,就好比目录说明一样,告诉后面的开发者这是重写的一个父类方法。
String类中有toString方法,用于返回字符串,但当返回结果的格式不是你所期望的时候,你可以重写toString方法,定义自己的返回值。
回复 使用道具 举报
清水 中级黑马 2012-12-28 13:59:40
7#
老师举的例子不是特别好,给人感觉多此一举的感觉。
只要知道,通过反射,可以知道一个类里的所有方法、成员变量、构造函数就够了。
虽然源代码看不到,可以试出功能来。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马