Java常用API(四)——所有類的超類Object中常用方法的重寫
阿新 • • 發佈:2018-12-02
先定義一個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)); } }