Java基礎——面向物件(七)Object類
阿新 • • 發佈:2019-01-10
一、概述
Object類是所有類的根類。
Object是不斷抽取而來,具備著所有物件都具備的共性內容。
二、equals方法
class Person extends Object { private int age; Person(int age) { this.age = age; } } class ObjectDemo { public static void main(String[] args) { Person p1 = new Person(20); Person p2 = new Person(20); System.out.println(p1==p2); System.out.println(p1.equals(p2)); } }
均輸出false,因為比較的是兩個物件的地址值。
equals方法覆蓋:
@Override
public boolean equals(Object obj) {
if(!(obj instanceof Person)){
throw new ClassCastException("型別錯誤");
}
else{
Person p = (Person)obj;
return this.age == p.age;
}
}
注意:當此方法被重寫時,通常有必要重寫 hashCode 方法
,以維護 hashCode 方法的常規協定,該協定宣告相等物件必須具有相等的雜湊碼。
三、hashCode方法
public class ArrayDemo { public void JavaDoc(){ } public static void main(String args[]){ Person p1 = new Person(20); Person p2 = new Person(20); ArrayDemo p3 = new ArrayDemo(); System.out.println(p1==p2); System.out.println(p1.equals(p2)); // System.out.println(p1.equals(p3)); System.out.println(Integer.toHexString(p1.hashCode())); System.out.println(p1); } } class Person extends Object { private int age; Person(int age) { this.age = age; } @Override public boolean equals(Object obj) { if(!(obj instanceof Person)){ throw new ClassCastException("型別錯誤"); } else{ Person p = (Person)obj; return this.age == p.age; } } @Override public int hashCode() { return this.age; } }
三、getClass方法
public class Test {
public static void main(String[] args) {
Person p = new Person(1,"老溼");
System.out.println(p.getClass());
System.out.println(p.getClass().getName());
}
}
class Person{
int id;
String name;
public Person(int id, String name) {
super();
this.id = id;
this.name = name;
}
}
四、toString方法
返回該物件的字串表示。通常,
toString
方法會返回一個“以文字方式表示”此物件的字串。結果應是一個簡明但易於讀懂的資訊表示式。建議所有子類都重寫此方法。
Object
類的toString
方法返回一個字串,該字串由類名(物件是該類的一個例項)、at 標記符“@
”和此物件雜湊碼的無符號十六進位制表示組成。換句話說,該方法返回一個字串,它的值等於:getClass().getName() + '@' + Integer.toHexString(hashCode())
返回:
該物件的字串表示形式。