版权声明:木心 https://blog.csdn.net/sinat_41642067/article/details/84704087
先定义一个Point类用于测试(含全参数构造方法、getters和setters)。
public class Point {
private int x;
private int y;
/**getters and setters:
* getter返回private成员值*/
public int getX() {
return x;
}
public Point(int x, int y) {
super();
this.x = x;
this.y = y;
}
public void setX(int x) {
this.x = x;
}
public int getY() {
return y;
}
public void setY(int y) {
this.y = y;
}
重写toString方法:该方法是一个非常常用的方法,很多API操作都会间接调用该方法。方法的目的是将当前对象转换为字符串 ,具体返回的字符串格式没有固定要求,遵循的原则是返回的内容中包含当前对象的属性信息,可以通过该字符串的内容直观反映出当前对象的内容。
public String toString() {
return "("+x+","+y+")";
}
Object定义的equals方法的设计意图是比较两个对象的内容是否相同。如果不重写该方法,那么Object内部是用"=="比较的,这样就丢去了equals比较的意义了。所以我们需要调用一个类的equals时,该方法就应当重写。
注:java提供的类大部分都已经重写过了,只有我们自己定义的类需要重写。
public boolean equals(Object o) {
if (o==null) {
return false;
}
if (this==o) {
return true;
}
if (o instanceof Point) {
Point p=(Point)o;
return x==p.x&&y==p.y;
}
return false;
}
}
package object;
import java.util.Arrays;
/**
* 测试Object类常用方法以及重写
*/
public class Demo {
public static void main(String[] args) {
Point point=new Point(1, 2);
/**
* Object的toString方法的设计意图是将当前类的
* 实例转换成一个字符
* Object已经实现了toString方法,默认返回当前对
* 象的句柄(类名@地址),但一般没用,所以重写(java
* 的类已经写好了)
*/
System.out.println(point.toString());
/**
* 该方法会将给定对象toString方法返回值输出控制台
*/
System.out.println(point);
Point[]a={new Point(1, 1),new Point(1, 2)};
System.out.println(Arrays.toString(a));
Point p2=new Point(1, 2);
System.out.println(point==p2);
System.out.println(point.equals(p2));
}
}