黑马程序员技术交流社区

标题: 求解:小问题? [打印本页]

作者: 刘经鹏    时间: 2012-12-28 09:32
标题: 求解:小问题?
本帖最后由 刘经鹏 于 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;
}

}
求解:红色字体部分。


作者: 王玮    时间: 2012-12-28 10:33
toString
public String toString()返回此对象本身(它已经是一个字符串!)。
返回:
字符串本身。

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




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2