Java常用API(四)——所有类的超类Object中常用方法的重写

版权声明:木心 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));
	}
}


猜你喜欢

转载自blog.csdn.net/sinat_41642067/article/details/84704087